#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k;
int a[500010],l[500010],r[500010];
struct node{
int x;
int p;
};
bool operator < (node x,node y){
return x.x>y.x;
}
priority_queue<node>q;
bool vis[500010];
int ans;
void erase(int x){
l[r[x]]=l[x];
r[l[x]]=r[x];
vis[x]=1;
}
void solve() {
memset(l,0,sizeof l);
memset(r,0,sizeof r);
memset(vis,0,sizeof vis);
ans=0;
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<n;i++){
a[i]=a[i+1]-a[i],l[i]=i-1;
if(i!=n-1) r[i]=i+1;
}
for(int i=1;i<n;i++)
q.push((node){a[i],i});
a[0]=1e18;
for(int i=1;i<=k;i++){
while(vis[q.top().p]) q.pop();
node t=q.top();
int x=t.x,p=t.p;
q.pop();
ans+=x;
a[p]=a[l[p]]+a[r[p]]-a[p];
vis[p]=0;
erase(l[p]),erase(r[p]);
q.push((node){a[p],p});
}
priority_queue<node>tmp;
swap(tmp,q);
cout<<ans<<"\n";
return;
}
signed main() {
int t;
cin>>t;
while(t--) solve();
return 0;
}
``