問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
長さ N の数列 A = a_1, a_2, ..., a_N が与えられます。
数列 A に対して次の操作を行います。
・操作: 操作時点で A の最も左にある数を A_L とし、1 ≦ x ≦ A_L となる任意の整数 x を選ぶ。
その後、左から x 個の連続する要素を削除する。ただし、A の現在の要素が x 個に満たない場合は削除できない。
操作を任意の回数おこない、数列の長さを 0 にできるような操作手順は何通りあるかを求めてください。
ただし、操作手順の数が非常に大きな数になることがあるので 10^10 で割った余りを出力してください。
N
a_1 a_2 ... a_N
答えを 1 行で出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて, 以下の条件をみたします
・入力はすべて整数
・1 ≦ N ≦ 1,000
・1 ≦ a_i ≦ 1,000 (1 ≦ i ≦ N)
3
3 2 1
4
5
1 1 1 1 1
1
35
1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
7179869184