#arc104f. [arc104_f]Visibility Sequence

[arc104_f]Visibility Sequence

問題文

一列に並んだ NN 棟のビルが建設中であり、ビルには左から順番に 1,2,ldots,N1, 2, \\ldots, N の番号がついています。

長さ NN の整数列 XX が与えられ、ビル ii の高さ HiH_i は、11 以上 XiX_i 以下の整数のいずれかにすることができます。

1leqileqN1 \\leq i \\leq N に対して、PiP_i を次のように定めます。

  • Hj>HiH_j > H_i を満たすような整数 j(1leqj<i)j (1 \\leq j < i) が存在する場合はそのような jj の最大値、存在しない場合は \-1\-1 とする

全てのビルの高さの組み合わせを考えるとき、 PP としてありうる整数列の個数を 10000000071000000007 で割った余りを求めてください。

制約

  • 1leqNleq1001 \\leq N \\leq 100
  • 1leqXileq1051 \\leq X_i \\leq 10^5
  • 入力は全て整数である

入力

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

NN X1X_1 X2X_2 cdots\\cdots XNX_N

出力

全てのビルの高さの組み合わせを考えるとき、 PP としてありうる整数列の個数を 10000000071000000007 で割った余りを出力せよ。


入力例 1

3
3 2 1

出力例 1

4

HH としては、次の 66 通りが考えられます。

  • H=(1,1,1)H = (1, 1, 1) のとき、PP(1,1,1)(-1, -1, -1) である
  • H=(1,2,1)H = (1, 2, 1) のとき、PP(1,1,2)(-1, -1, 2) である
  • H=(2,1,1)H = (2, 1, 1) のとき、PP(1,1,1)(-1, 1, 1) である
  • H=(2,2,1)H = (2, 2, 1) のとき、PP(1,1,2)(-1, -1, 2) である
  • H=(3,1,1)H = (3, 1, 1) のとき、PP(1,1,1)(-1, 1, 1) である
  • H=(3,2,1)H = (3, 2, 1) のとき、PP(1,1,2)(-1, 1, 2) である

よって、PP としてありうる整数列は (1,1,1),(1,1,2),(1,1,1),(1,1,2)(-1, -1, -1), (-1, -1, 2), (-1, 1, 1), (-1, 1, 2)44 個です。


入力例 2

3
1 1 2

出力例 2

1

HH としては、次の 22 通りが考えられます。

  • H=(1,1,1)H = (1, 1, 1) のとき、PP(1,1,1)(-1, -1, -1) である
  • H=(1,1,2)H = (1, 1, 2) のとき、PP(1,1,1)(-1, -1, -1) である

よって、PP としてありうる整数列は 11 個です。


入力例 3

5
2 2 2 2 2

出力例 3

16

入力例 4

13
3 1 4 1 5 9 2 6 5 3 5 8 9

出力例 4

31155