#include<bits/stdc++.h>
#define lb(x) (x&(-x))
#define M(x) (now.dt[0][x])
using namespace std;
typedef long long ll;
const int mod=1e9+7,N=5e5+10;
ll inv2,n,k,nm[N],dt[2][N];
ll ans;
struct aa
{
ll dt[10][10];
aa operator (const aa &b)const
{
aa res; memset(res.dt,0,sizeof(res.dt));
for(int i=0;i<7;i++)
for(int j=0;j<7;j++)
for(int li=0;li<7;li++) res.dt[i][j]=(res.dt[i][j]+dt[i][li]b.dt[li][j])%mod;
return res;
}
}mt,now;
int read()
{
int res=0,fl=0; char a=getchar();
while(a<'0'||a>'9') {if(a=='-') fl=1;a=getchar();}
while(a>='0'&&a<='9') res=res10+a-'0',a=getchar();
return fl? -res:res;
}
ll ksm(ll di,ll mi) {ll res=1; for(;mi;mi>>=1,di=didi%mod) if(mi&1) res=resdi%mod; return res;}
ll c2(ll x) {return x(x-1)/2%mod;}
void add(ll fl,ll x,ll k) {for(;x<=n;x+=lb(x)) dt[fl][x]=(dt[fl][x]+k)%mod;}
ll query(ll fl,ll x) {ll res=0; for(;x;x-=lb(x)) res=(res+dt[fl][x])%mod; return res;}
int main()
{
ll i,j,ff=0,gg=0;
n=read(),k=read(),inv2=ksm(2,mod-2);
for(i=1;i<=n;i++) nm[i]=read();
mt=aa{{
{c2(n-2),1,n-2,0,n-2,0,0},
{1,c2(n-2),0,n-2,0,n-2,0},
{1,0,(c2(n-2)+(n-3))%mod,1,0,1,n-3},
{0,1,1,(c2(n-2)+(n-3))%mod,1,0,n-3},
{1,0,0,1,(c2(n-2)+(n-3))%mod,1,n-3},
{0,1,1,0,1,(c2(n-2)+(n-3))%mod,n-3},
{0,0,1,1,1,1,(c2(n-2)+2*(n-4)+1)%mod}
}},now.dt[0][0]=1;
for(;k;k>>=1,mt=mtmt) if(k&1) now=nowmt;
for(i=1;i<=n;i++)
{
ll a=query(0,nm[i]),b=i-1-a,fa=query(1,nm[i]),fb=(ff-fa+mod)%mod,ga=((n-2)a-fa)%mod,gb=(gg-ga+mod)%mod;
ans=(ans+bM(0)+aM(1)+((b(i-2)+a*(n-i))%modM(2)%mod+(a(i-2)+b*(n-i))%mod*M(3)%mod+(gb+fa)*M(4)%mod+(ga+fb)M(5)%mod)%modksm(n-2,mod-2))%mod;
add(0,nm[i],1),add(1,nm[i],i-1),ff=(ff+i-1)%mod,gg=(gg+n-i-1)%mod;
}
cout<<(ans+c2(n)inv2%modM(6))%mod;
return 0;
}