問題文

長さ NN の順列 p=(p1,p2,,pN)p=(p_1,p_2,\ldots,p_N) のうち、以下の条件を満たすものの個数を 998244353998244353 で割った余りを求めてください。

  • 1iM1 \leq i \leq M を満たす全ての整数 ii について、 p1+p2++paip_1+p_2+\ldots +p_{a_i}22 で割った余りが bib_i である。

  

制約

  • 1N20001\leq N \leq 2000
  • 0M2×N0\leq M \leq 2×N
  • 1aiN1\leq a_i \leq N
  • 0bi10\leq b_i \leq 1
  • iji≠j ならば (ai,bi)(aj,bj)(a_i,b_i)≠(a_j,b_j)
  • 入力は全て整数   

入力

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

N MN \ M
a1 b1a_1 \ b_1
a2 b2a_2 \ b_2
::
aM bMa_{M} \ b_{M}

  

出力

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

  

入力例1

3 1
2 0

出力例1

2

(1,3,2)(1,3,2)(3,1,2)(3,1,2)22 つが条件を満たします。

入力例2

6 2
1 0
1 1

出力例2

0

iji≠j ならば (ai,bi)(aj,bj)(a_i,b_i)≠(a_j,b_j) ですが、 aiaja_i≠a_j とは限りません。

入力例3

1000 0

出力例3

421678599

998244353998244353 で割った余りを求めることに注意してください。

提出


Go (1.21)