#arc141b. [arc141_b]Increasing Prefix XOR

[arc141_b]Increasing Prefix XOR

問題文

正整数 N,MN,\\ M が与えられます。

長さ NN の正整数列 A=(A1,A2,dots,AN)A=(A_1,\\ A_2,\\ \\dots,\\ A_N) であって、以下の条件を満たすものの個数を 998244353998244353 で割った余りを求めてください。

  • 1leqA1<A2<dots<ANleqM1 \\leq A_1 < A_2 < \\dots < A_N \\leq M
  • Bi=A1oplusA2oplusdotsoplusAiB_i = A_1 \\oplus A_2 \\oplus \\dots \\oplus A_i としたとき、 B1<B2<dots<BNB_1 < B_2 < \\dots < B_N

ただしここで、 oplus\\oplus はビット単位 mathrmXOR\\mathrm{XOR} 演算を表します。

ビット単位 mathrmXOR\\mathrm{XOR} 演算とは

非負整数 A,BA, B のビット単位 mathrmXOR\\mathrm{XOR}AoplusBA \\oplus B は、以下のように定義されます。

  • AoplusBA \\oplus B を二進表記した際の 2k2^k (kgeq0k \\geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち一方のみが 11 であれば 11、そうでなければ 00 である。

例えば、3oplus5=63 \\oplus 5 = 6 となります (二進表記すると: 011oplus101=110011 \\oplus 101 = 110)。
一般に kk 個の非負整数 p1,p2,p3,dots,pkp_1, p_2, p_3, \\dots, p_k のビット単位 mathrmXOR\\mathrm{XOR} は $(\\dots ((p_1 \\oplus p_2) \\oplus p_3) \\oplus \\dots \\oplus p_k)$ と定義され、これは p1,p2,p3,dots,pkp_1, p_2, p_3, \\dots, p_k の順番によらないことが証明できます。

制約

  • 1leqNleqM<2601 \\leq N \\leq M < 2^{60}
  • 入力される値はすべて整数

入力

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

NN MM

出力

答えを出力してください。


入力例 1

2 4

出力例 1

5

例えば (A1,A2)=(1,3)(A_1,\\ A_2)=(1,\\ 3) とすると A1<A2A_1 < A_2 であり、B1=A1=1,B2=A1oplusA2=2B_1=A_1=1,\\ B_2=A_1\\oplus A_2=2 より B1<B2B_1 < B_2 が成り立つので条件を満たします。

この他には $(A_1,\\ A_2)=(1,\\ 2),\\ (1,\\ 4),\\ (2,\\ 4),\\ (3,\\ 4)$ が条件を満たします。


入力例 2

4 4

出力例 2

0

入力例 3

10 123456789

出力例 3

205695670