#arc065d. [arc065_d]Shuffling

[arc065_d]Shuffling

問題文

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

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

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

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

制約

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

入力

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

NN MM SS l1l_1 r1r_1 : lMl_M rMr_M

出力

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


入力例 1

5 2
01001
2 4
3 5

出力例 1

6

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


入力例 2

9 3
110111110
1 4
4 6
6 9

出力例 2

26

入力例 3

11 6
00101000110
2 4
2 3
4 7
5 6
6 10
10 11

出力例 3

143