AT_wupc2019_j Color Ball
Description
[problemUrl]: https://atcoder.jp/contests/wupc2019/tasks/wupc2019_j
\\(N\\) 本の全て色が異なる筒があり、それぞれに筒と同じ色のボールが \\(a\_1\\), \\(a\_2\\), ..., \\(a\_N\\)個入っています。全ての筒に入っているボールを合わせると \\(M\\) 個です。
筒の幅はボールちょうど1つ分です。空である筒はないものとします。
アヤコさんは次のような遊びを思いつきました。以下の条件を満たすように、筒からボールを出して入れ直すというものです。
- 各筒に入っているボールの数が初期状態から変化していないこと。
- 各筒に入っているボールの色は、その筒の色と異なること。
条件を満たすようなボールの入れ方は何通りあるでしょうか。\\(10^9+7\\) で割った余りを求めてください。
ただし、同色のボール同士の区別はしませんが、筒に入っているボールの色の順番を区別するものとします。
Input Format
入力は以下の形式で標準入力から与えられる。
```
\(N\) \(M\)
\(a_1\) \(a_2\) \(\dots\) \(a_N\)
```
Output Format
問題の答えを1行に出力せよ。
Explanation/Hint
### 制約
- \\(1 \\leq N \\leq 2000\\)
- \\(1 \\leq M \\leq 2000\\)
- \\(1 \\leq a\_i \\leq M\\)
- \\(\\sum a\_i = M\\)
- 入力される値はすべて整数である。
### Sample Explanation 1
条件を満たすのは2つのボールを下図のように入れ替えるパターンのみなので、答えは1通りです。 !\[\](https://img.atcoder.jp/wupc2019/j\_sample1\_98ba0shj8amur03y.png)
### Sample Explanation 2
下図のように、答えは4通りです。 !\[\](https://img.atcoder.jp/wupc2019/j\_sample2\_mhbk98uaz6yz1525.png)
### Sample Explanation 3
どのようにボールを入れても条件を満たすことができません。