#arc144d. [arc144_d]AND OR Equation

[arc144_d]AND OR Equation

問題文

正整数 N,KN, K が与えられます.整数列 bigl(f(0),f(1),ldots,f(2N1)bigr)\\bigl(f(0), f(1), \\ldots, f(2^N-1)\\bigr) であって,以下の条件をすべて満たすものの個数を 998244353998244353 で割った余りを答えてください.

  • 任意の非負整数 xx (0leqxleq2N10\\leq x \\leq 2^N-1) に対して 0leqf(x)leqK0\\leq f(x)\\leq K.
  • 任意の非負整数 x,yx, y (0leqx,yleq2N10\\leq x, y \\leq 2^N-1) に対して $f(x) + f(y) = f(x \\,\\mathrm{AND}\\, y) + f(x \\,\\mathrm{OR}\\, y)$.

ただし,mathrmAND\\mathrm{AND}, mathrmOR\\mathrm{OR} はそれぞれビットごとの論理積,論理和を表します.

制約

  • 1leqNleq3times1051\\leq N\\leq 3\\times 10^5
  • 1leqKleq10181\\leq K\\leq 10^{18}

入力

入力は以下の形式で標準入力から与えられます.

NN KK

出力

条件を満たす整数列の個数を 998244353998244353 で割った余りを出力してください.


入力例 1

2 1

出力例 1

6

条件を満たす整数列は以下の 66 個です.

  • (0,0,0,0)(0,0,0,0)
  • (0,1,0,1)(0,1,0,1)
  • (0,0,1,1)(0,0,1,1)
  • (1,0,1,0)(1,0,1,0)
  • (1,1,0,0)(1,1,0,0)
  • (1,1,1,1)(1,1,1,1)

入力例 2

2 2

出力例 2

19

入力例 3

100 123456789123456789

出力例 3

34663745