atcoder#ARC065D. [ARC065F] シャッフル

[ARC065F] シャッフル

配点 : 900900

問題文

長さ NN01 からなる文字列 SS があります。あなたは、以下の操作を各 1iM1 \leq i \leq M に対し ii の昇順に行います。

  • SS のうち、左から lil_i 文字目から rir_i 文字目までの部分文字列を自由な順番で並び替える。

ただし、lil_i は非減少です。

MM 回の操作後の SS としてありうるものの数を 1000000007(=109+7)1000000007(= 10^9+7) で割った余りを求めてください。

制約

  • 2N30002 \leq N \leq 3000
  • 1M30001 \leq M \leq 3000
  • SS0, 1 からなる。
  • SS の長さは NN と等しい。
  • 1li<riN1 \leq l_i < r_i \leq N
  • lili+1l_i \leq l_{i+1}

入力

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

NN MM

SS

l1l_1 r1r_1

:

lMl_M rMr_M

出力

MM 回の操作後の SS としてありうるものの数を 10000000071000000007 で割った余りを出力してください。

5 2
01001
2 4
3 5
6

11回目の操作後の SS としてありうるものは、 01001, 00101, 0001133 つです。 22回目の操作後の SS としてありうるものは、 01100, 01010, 01001, 00011, 00101, 0011066 つです。

9 3
110111110
1 4
4 6
6 9
26
11 6
00101000110
2 4
2 3
4 7
5 6
6 10
10 11
143