#agc023e. [agc023_e]Inversions

[agc023_e]Inversions

問題文

すぬけ君は、長さ NN の整数列 AA を持っています。 すぬけ君は、(1,2,...,N)(1, 2, ..., N) の順列 PP であって、次の条件を満たすものが好きです。

  • 全ての ii ( 1leqileqN1 \\leq i \\leq N ) について、PileqAiP_i \\leq A_i

すぬけ君は、条件を満たすような順列の転倒数 ( ※ ) に興味を持ちました。 すぬけ君のために、条件を満たすような全ての順列について転倒数を求め、その総和を求めてください。 ただし、答えは非常に大きくなることがあるので、109+710^9 + 7 で割った余りを求めてください。

注釈

ある長さ NN の数列 ZZ の転倒数とは、整数 i,ji, j ( 1leqi<jleqN1 \\leq i < j \\leq N ) の組であって、Zi>ZjZ_i > Z_j を満たすものの個数を意味します。

制約

  • 1leqNleq2times1051 \\leq N \\leq 2 \\times 10^5
  • 1leqAileqN1 \\leq A_i \\leq N ( 1leqileqN1 \\leq i \\leq N )
  • 入力はすべて整数である。

入力

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

NN A1A_1 A2A_2 ...... ANA_N

出力

条件を満たすすべての順列の転倒数の総和を 109+710^9 + 7 で割った余りを出力せよ。


入力例 1

3
2 3 3

出力例 1

4

条件を満たす順列は (1,2,3)(1,2,3), (1,3,2)(1,3,2), (2,1,3)(2,1,3), (2,3,1)(2,3,1)44 つです。 それぞれの転倒数は 00, 11, 11, 22 なので、その総和である 44 を出力します。


入力例 2

6
4 2 5 1 6 3

出力例 2

7

条件を満たす順列は (4,2,5,1,6,3)(4,2,5,1,6,3) のみです。 この順列の転倒数は 77 なので、77 を出力します。


入力例 3

5
4 4 4 4 4

出力例 3

0

条件を満たす順列は 11 つもありません。


入力例 4

30
22 30 15 20 10 29 11 29 28 11 26 10 18 28 22 5 29 16 24 24 27 10 21 30 29 19 28 27 18 23

出力例 4

848414012