atcoder#AGC056B. [AGC056B] Range Argmax

[AGC056B] Range Argmax

配点 : 900900

問題文

整数 NN と整数の組が MM 個与えられます. ii 番目の組は (Li,Ri)(L_i,R_i) です.

以下の手順で生成されうる整数列 x=(x1,x2,,xM)x=(x_1,x_2,\cdots,x_M) の個数を 998244353998244353 で割った余りを求めて下さい.

  • (1,2,,N)(1,2,\cdots,N) の順列 p=(p1,p2,,pN)p=(p_1,p_2,\cdots,p_N) を用意する.
  • ii (1iM1 \leq i \leq M) について,pLi,pLi+1,,pRip_{L_i},p_{L_i+1},\cdots,p_{R_i} の中で最も大きい値の index を xix_i とする. つまり,max(pLi,pLi+1,,pRi)=pxi\max(p_{L_i},p_{L_i+1},\cdots,p_{R_i})=p_{x_i} である.

制約

  • 2N3002 \leq N \leq 300
  • 1MN(N1)/21 \leq M \leq N(N-1)/2
  • 1Li<RiN1 \leq L_i < R_i \leq N
  • (Li,Ri)(Lj,Rj)(L_i,R_i) \neq (L_j,R_j) (iji \neq j)
  • 入力される値はすべて整数である

入力

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

NN MM

L1L_1 R1R_1

L2L_2 R2R_2

\vdots

LML_M RMR_M

出力

答えを出力せよ.

3 2
1 2
1 3
4

例えば,p=(2,1,3)p=(2,1,3) とした場合は x=(1,3)x=(1,3) となります.

条件を満たす数列は,x=(1,1),(1,3),(2,2),(2,3)x=(1,1),(1,3),(2,2),(2,3)44 通りです.

6 3
1 2
3 4
5 6
8
10 10
8 10
5 8
5 7
2 5
1 7
4 5
5 9
2 8
7 8
3 9
1060