[ARC065F] シャッフル

题意翻译

有一个长度为 $N$ 的 $01$ 串 $S$。对于每个 $i=1,2,\ldots,M$,你将要按顺序地进行以下操作: * 任意地排列 $S$ 中第 $l_i$ 到第 $r_i$ 个字符之间的字符。 保证 $l_i$ 是不降的。 请你求出在 $M$ 次操作后,可以出现多少种不同的 $01$ 串。答案对 $10^9+7$ 取模。 $N, M \leq 3000$。

题目描述

[problemUrl]: https://atcoder.jp/contests/arc065/tasks/arc065_d 長さ $ N $ の `0`、`1` からなる文字列 $ S $ があります。あなたは、以下の操作を各 $ 1≦i≦M $ に対し $ i $ の昇順に行います。 - $ S $ のうち、左から $ l_i $ 文字目から $ r_i $ 文字目までの部分文字列を自由な順番で並び替える。 ただし、$ l_i $ は非減少です。 $ M $ 回の操作後の $ S $ としてありうるものの数を $ 1000000007(=\ 10^9+7) $ で割った余りを求めてください。

输入输出格式

输入格式


入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ S $ $ l_1 $ $ r_1 $ : $ l_M $ $ r_M $

输出格式


$ M $ 回の操作後の $ S $ としてありうるものの数を $ 1000000007 $ で割った余りを出力してください。

输入输出样例

输入样例 #1

5 2
01001
2 4
3 5

输出样例 #1

6

输入样例 #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

说明

### 制約 - $ 2≦N≦3000 $ - $ 1≦M≦3000 $ - $ S $ は`0`, `1` からなる。 - $ S $ の長さは $ N $ と等しい。 - $ 1≦l_i\ <\ r_i≦N $ - $ l_i\ ≦\ l_{i+1} $ ### Sample Explanation 1 $ 1 $回目の操作後の $ S $ としてありうるものは、 `01001`, `00101`, `00011` の $ 3 $ つです。 $ 2 $回目の操作後の $ S $ としてありうるものは、 `01100`, `01010`, `01001`, `00011`, `00101`, `00110` の $ 6 $ つです。