#arc133d. [arc133_d]Range XOR

[arc133_d]Range XOR

問題文

整数 L,R,VL,R,V が与えられます. 次の条件を両方満たす整数の組 (l,r)(l,r) の個数を 998244353998244353 で割った余りを求めてください.

  • LleqlleqrleqRL \\leq l \\leq r \\leq R
  • loplus(l+1)opluscdotsoplusr=Vl \\oplus (l+1) \\oplus \\cdots \\oplus r=V

ただしここで,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,dotspkp_1, p_2, p_3, \\dots p_k の順番によらないことが証明できます。

制約

  • 1leqLleqRleq10181 \\leq L \\leq R \\leq 10^{18}
  • 0leqVleq10180 \\leq V \\leq 10^{18}
  • 入力される値はすべて整数である

入力

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

LL RR VV

出力

答えを出力せよ.


入力例 1

1 3 3

出力例 1

2

条件を満たすのは,(l,r)=(1,2)(l,r)=(1,2)(l,r)=(3,3)(l,r)=(3,3)22 つです.


入力例 2

10 20 0

出力例 2

6

入力例 3

1 1 1

出力例 3

1

入力例 4

12345 56789 34567

出力例 4

16950