100 atcoder#ABC209C. [ABC209C] Not Equal

[ABC209C] Not Equal

配点 : 300300

問題文

長さ NN の整数列 CC が与えられます。以下の条件を全て満たす長さ NN の整数列 AA の個数を求めてください。

  • 1AiCi(1iN)1 \leq A_i \leq C_i\, (1 \leq i \leq N)
  • AiAj(1i<jN)A_i \neq A_j\, (1 \leq i < j \leq N)

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

制約

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1Ci1091 \leq C_i \leq 10^9
  • 入力は全て整数

入力

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

NN

C1C_1 C2C_2 \ldots CNC_N

出力

条件を全て満たす整数列 AA の個数を (109+7)(10^9+7) で割った余りを出力せよ。

2
1 3
2

条件を全て満たす AA(1,2)(1,2)(1,3)(1,3)22 つです。 例えば A=(1,1)A=(1,1)22 つ目の条件を満たしません。

4
3 3 4 4
12
2
1 1
0

条件を全て満たす整数列は 11 つも存在しないので、00 と出力してください。

10
999999917 999999914 999999923 999999985 999999907 999999965 999999914 999999908 999999951 999999979
405924645

(109+7)(10^9+7) で割った余りを出力することに注意してください。