AT_arc065_d [ARC065F] シャッフル
Description
[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) $ で割った余りを求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ S $ $ l_1 $ $ r_1 $ : $ l_M $ $ r_M $
Output Format
$ M $ 回の操作後の $ S $ としてありうるものの数を $ 1000000007 $ で割った余りを出力してください。
Explanation/Hint
### 制約
- $ 2≦N≦3000 $
- $ 1≦M≦3000 $
- $ S $ は`0`, `1` からなる。
- $ S $ の長さは $ N $ と等しい。
- $ 1≦l_i\