#arc141b. [arc141_b]Increasing Prefix XOR

[arc141_b]Increasing Prefix XOR

题目描述

给定正整数 NNMM

找到满足以下条件的 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
  • B1<B2<dots<BNB_1 < B_2 < \\dots < B_N,其中 Bi=A1oplusA2oplusdotsoplusAiB_i = A_1 \\oplus A_2 \\oplus \\dots \\oplus A_i

这里,oplus\\oplus 表示位运算异或。

什么是位运算异或?

对于非负整数 AABB,位运算异或 AoplusBA \\oplus B 定义如下:

  • 当将 AoplusBA \\oplus B 用二进制表示时,第 2k2^k 位(kgeq0k \\geq 0)上的数字为 11,当且仅当 AABB 中恰好有一个数字为 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 的位运算异或被定义为 $(\\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_2B1<B2B_1 < B_2,其中 B1=A1=1,B2=A1oplusA2=2B_1=A_1=1,\\ B_2=A_1\\oplus A_2=2

其他满足条件的配对有 $(A_1,\\ A_2)=(1,\\ 2),\\ (1,\\ 4),\\ (2,\\ 4),\\ (3,\\ 4)$。


示例输入 2

4 4

示例输出 2

0

示例输入 3

10 123456789

示例输出 3

205695670