Problem:
Score : 300 points

Problem Statement

We have a sequence of N integers A~=~A_0,~A_1,~...,~A_{N - 1}.

Let B be a sequence of K \times N integers obtained by concatenating K copies of A. For example, if A~=~1,~3,~2 and K~=~2, B~=~1,~3,~2,~1,~3,~2.

Find the inversion number of B, modulo 10^9 + 7.

Here the inversion number of B is defined as the number of ordered pairs of integers (i,~j)~(0 \leq i < j \leq K \times N - 1) such that B_i > B_j.

Constraints

All values in input are integers.

1 \leq N \leq 2000

1 \leq K \leq 10^9

1 \leq A_i \leq 2000

Input

Input is given from Standard Input in the following format:

N K
A_0 A_1 ... A_{N - 1}

Output

Print the inversion number of B, modulo 10^9 + 7.

Sample Input 1

2 2
2 1

Sample Output 1

3

In this case, B~=~2,~1,~2,~1. We have:

B_0 > B_1

B_0 > B_3

B_2 > B_3

Thus, the inversion number of B is 3.

Sample Input 2

3 5
1 1 1

Sample Output 2

0

A may contain multiple occurrences of the same number.

Sample Input 3

10 998244353
10 9 8 7 5 6 3 4 2 1

Sample Output 3

185297239

Be sure to print the output modulo 10^9 + 7.

Solution in Pascal (FPC 2.6.2) (judge verdict: Accepted)

const md = 1000000007;
type ary=array[0..2010] of int64;
var n,k,i,j,ans,save,count1,count2,sum1,sum2,save1,save2:int64;
    a:ary;
    

begin
read(n,k);
ans:=0;
sum2:=((k+1)*k div 2) mod md;
sum1:=((k-1)*k div 2) mod md;
for i := 0 to n-1 do read(a[i]);
for i := 0 to n-1 do
begin
 count1:=0;count2:=0;
 for j := 0 to i-1 do
 if a[i]>a[j] then inc(count1);
 for j := i+1 to n-1 do
 if a[i]>a[j] then inc(count2);
 if (count1=0)and(count2=0) then continue;
 save1:=sum1*count1 mod md;
 save2:=sum2*count2 mod md;
 ans:=(ans+save1) mod md;
 ans:=(ans+save2) mod md;
end;


write(ans)
end.