#codethanksfestival2018e. [code_thanks_festival_2018_e]Union

[code_thanks_festival_2018_e]Union

問題文

11 以上 TT 以下の整数を、各 ii00 個以上 aia_{i} 個以下の範囲で、好きな個数黒板に書くことができます。

書かれている整数に対して次の操作を繰り返して、ただ 11 つの整数が黒板に書かれているようにできるような整数の書き方は何通りあるでしょうか。

  • 黒板に書かれている整数のうち、22 つ以上ある整数 XX22 つ消して、黒板に X+1X+111 つ書く

答えは非常に大きくなることがあるので、10000000071000000007 で割った余りを計算してください。

ただし 22 つの書き方が異なるとは、それぞれの書き方において操作を始める前に黒板に書かれている個数が異なるような整数が存在する場合を表します。

制約

  • 1leqTleq3001 \\leq T \\leq 300
  • 0leqaileq3000 \\leq a_i \\leq 300
  • 入力は全て整数である

入力

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

TT a1a_1 a2a_2 ... aT1a_{T-1} aTa_T

出力

上手く操作を行うことで黒板に書かれている整数を 11 つに出来るような選び方の個数を 10000000071000000007 で割った余りを出力せよ。


入力例 1

2
1 1

出力例 1

2

1111 つ書くか、2211 つ書く方法が条件を満たします。


入力例 2

3
2 1 1

出力例 2

6

入力例 3

8
300 300 300 300 300 300 300 300

出力例 3

220439161