F - Cycle and Xor Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 100

問題文

0 以上 2^M 未満の整数からなる長さ N の数列 A=(A_0,A_1,\ldots,A_{N-1}) であって、以下の条件を満たすものの個数を 998244353 で割った余りを求めてください。

  • すべての整数 i\ (0 \le i \le N-1) について、 A_i \oplus A_{(i+1) \bmod N} \neq T_i かつ A_i \oplus A_{(i+1) \bmod N} \neq U_i が成り立つ

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

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

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

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

例えば、3\oplus 5 = 6 となります(二進表記すると: 011\oplus 101 = 110)。

制約

  • 2 \le N \le 2\times 10^5
  • 1 \le M \le 30
  • 0 \le T_i < U_i < 2^M
  • 入力は全て整数

入力

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

N M
T_0 U_0
T_1 U_1
\vdots
T_{N-1} U_{N-1}

出力

答えを出力せよ。


入力例 1

3 2
0 1
1 2
2 3

出力例 1

8

A としてありうるのは (0,2,1),(0,3,0),(1,3,0),(1,2,1),(2,0,3),(2,1,2),(3,1,2),(3,0,3)8 通りです。


入力例 2

3 1
0 1
0 1
0 1

出力例 2

0

入力例 3

5 10
31 415
92 653
58 979
32 384
62 643

出力例 3

552613140