#abc278h. [abc278_h]make 1

[abc278_h]make 1

题目描述

一个非负整数序列 SS 被称为是好序列,如果满足以下条件:

  • 存在一个非空的(不一定是连续的)子序列 TT,使得子序列 TT 中所有元素按位异或的结果为 11

现在有一个空序列 AA,以及 2B2^B 张卡片,每张卡片上写有介于 002B12^B-1 之间的整数。
你需要不断重复以下操作,直到序列 AA 变成一个好序列:

  • 你可以自由选择一张卡片,并将其上的整数追加到序列 AA 的末尾。然后,你会将这张卡片吃掉(一旦被吃掉,就不能再选择这张卡片了)。

经过这些操作后,长度为 NN 的序列 AA 有多少种可能的结果?对 998244353998244353 取模后输出结果。

什么是按位异或?非负整数 AABB 的按位异或运算 AoplusBA \\oplus B 定义如下:

  • AoplusBA \\oplus B 转化为二进制形式,第 kk 个(kgeq0k \\geq 0)二进制位如果 AABB 的第 kk 个二进制位中只有一个为 11,则该二进制位为 11,否则为 00

例如,3oplus5=63 \\oplus 5 = 6(二进制形式:011oplus101=110011 \\oplus 101 = 110)。

约束条件

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1B1071 \leq B \leq 10^7
  • N2BN \leq 2^B
  • NNBB 为整数。

输入和输出

输入通过标准输入给出,格式如下:

NN BB

输出答案。

样例输入 1

2 2

样例输出 1

5

经过操作后,长度为 22 的序列 AA 可以有以下 55 种可能的结果。

  • (0,1)(0, 1)
  • (2,1)(2, 1)
  • (2,3)(2, 3)
  • (3,1)(3, 1)
  • (3,2)(3, 2)

样例输入 2

2022 1119

样例输出 2

293184537

样例输入 3

200000 10000000

样例输出 3

383948354