using namespace std;
typedef long long ll;
const int N=5e5+5;
int read()
{
int ret=0;
char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
for(; ch>='0'&&ch<='9'; ch=getchar()) ret=ret*10+ch-'0';
return ret;
}
int pos[N],nxt[N],pre[N];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n=read(),m=read();
for(int i=1; i<=n; i++)
{
int x=read();
pos[x]=i,pre[i]=i-1,nxt[i]=i+1;
}
pre[0]=0;
nxt[n+1]=n+1;
ll sum=0;
for(int j=1; j<=n; j++)
{
int x=pos[j];
int rq[105];
int lc,rc;
lc=rc=0;
for(int i=x;i<=n&&rc<m;i=nxt[i])
rq[++rc]=nxt[i]-i;
ll ans=0;
for(int i=x; i>0&&lc<m; i=pre[i])
{
lc++;
if(m-lc+1>rc) continue;
else ans+=(i-pre[i])*rq[m-lc+1];
}
sum+=ans*j;
pre[nxt[x]]=pre[x];
nxt[pre[x]]=nxt[x];
}
printf("%I64d\n",sum);
}
}