#abc209c. [abc209_c]Not Equal

[abc209_c]Not Equal

問題文

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

  • 1leqAileqCi,(1leqileqN)1 \\leq A_i \\leq C_i\\, (1 \\leq i \\leq N)
  • AineqAj,(1leqi<jleqN)A_i \\neq A_j\\, (1 \\leq i < j \\leq N)

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

制約

  • 1leqNleq2times1051 \\leq N \\leq 2 \\times 10^5
  • 1leqCileq1091 \\leq C_i \\leq 10^9
  • 入力は全て整数

入力

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

NN C1C_1 C2C_2 ldots\\ldots CNC_N

出力

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


入力例 1

2
1 3

出力例 1

2

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


入力例 2

4
3 3 4 4

出力例 2

12

入力例 3

2
1 1

出力例 3

0

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


入力例 4

10
999999917 999999914 999999923 999999985 999999907 999999965 999999914 999999908 999999951 999999979

出力例 4

405924645

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