AT_arc117_b [ARC117B] ARC Wrecker
Description
[problemUrl]: https://atcoder.jp/contests/arc117/tasks/arc117_b
AtCoder 街道には $ N $ 個のビルが建設されています。最初、左から $ i $ 番目のビルは $ A_i $ 階建てです。
ARC 解体業者の社長である高橋君は、以下の操作を好きな回数だけ行うことができます。$ 1 $ 回も操作を行わないことも可能です。
- 好きな正の整数 $ X $ を選び、$ X $ 階の高さから大砲を発射する。そのとき、現時点で $ X $ 階建て以上であるすべてのビルについて、階数が $ 1 $ 減少する。
あり得る最終的なビルの景観の数を $ 10^{9}\ +\ 7 $ で割った余りを求めてください。
ただし、景観 A と景観 B が異なるとは、以下のことを指します。
- 景観 A における、左から $ i $ 番目のビルの高さを $ P_i $ とする。
- 景観 B における、左から $ i $ 番目のビルの高さを $ Q_i $ とする。
- $ P_i\ \neq\ Q_i $ となる $ i $ が $ 1 $ つでも存在する場合、景観 A と景観 B は異なる。
Input Format
入力は以下の形式で標準入力から与えられます。
> $ N $ $ A_1 $ $ A_2 $ $ \cdots $ $ A_N $
Output Format
答えを出力してください。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 100000 $
- $ 1\ \leq\ A_i\ \leq\ 10^{9} $
- 入力はすべて整数
### Sample Explanation 1
操作後のビルの高さとしてあり得るものは、以下の $ 4 $ 通りです。 - (ビル $ 1 $ の階数, ビル $ 2 $ の階数) = $ (0,\ 0) $ - (ビル $ 1 $ の階数, ビル $ 2 $ の階数) = $ (0,\ 1) $ - (ビル $ 1 $ の階数, ビル $ 2 $ の階数) = $ (1,\ 1) $ - (ビル $ 1 $ の階数, ビル $ 2 $ の階数) = $ (1,\ 2) $
### Sample Explanation 3
全部で $ 20192492160000 $ 通りの景観があり得ますが、それを $ 10^{9}\ +\ 7 $ で割った余りである $ 492018656 $ を出力すると正解になります。