#abc207e. [abc207_e]Mod i

[abc207_e]Mod i

問題文

長さ NN の数列 AA が与えられます。AA をいくつかの連続した空でない部分列 B1,B2,ldots,BkB_1,B_2,\\ldots,B_k に切り分ける方法であって、以下の条件を満たすものの個数を求めてください。

  • 全ての i(1leqileqk)i\\ (1 \\leq i \\leq k) について、BiB_i に含まれる要素の総和が ii で割り切れる。

答えは非常に大きくなることがあるので、(109+7)(10^9+7) で割ったあまりを出力してください。

制約

  • 1leqNleq30001 \\leq N \\leq 3000
  • 1leqAileq10151 \\leq A_i \\leq 10^{15}
  • 入力は全て整数

入力

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

NN A1A_1 A2A_2 ldots\\ldots ANA_N

出力

問題文中の条件を満たすような切り分け方の個数を (109+7)(10^9+7) で割ったあまりを出力せよ。


入力例 1

4
1 2 3 4

出力例 1

3

以下の 33 通りの切り分け方があります。

  • (1),(2),(3),(4)(1),(2),(3),(4)
  • (1,2,3),(4)(1,2,3),(4)
  • (1,2,3,4)(1,2,3,4)

入力例 2

5
8 6 3 3 3

出力例 2

5

入力例 3

10
791754273866483 706434917156797 714489398264550 918142301070506 559125109706263 694445720452148 648739025948445 869006293795825 718343486637033 934236559762733

出力例 3

15

入力が 3232 bit 整数型に収まりきらない場合があります。