#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define reg register
#define il inline
const int N = 100005;
struct node {
int val, l, r;
} p[N];
struct H {
int val, id;
bool operator<(const H&a) const {
return a.val < val;
}
H (int x, int y) {
val = x, id = y;
}
};
int T;
int n, k, ans, last;
bool vis[N];
priority_queue<H> q;
void del(int x) {
p[p[x].l].r = p[x].r;
p[p[x].r].l = p[x].l;
}
int main() {
scanf("%d", &T);
while (T--) {
memset(vis, 0, sizeof(vis));
memset(p, 0, sizeof(p));
ans = 0;
while (!q.empty()) q.pop();
scanf("%d%d%d", &n, &k, &last);
for (int i = 1; i < n; ++i) {
int w; scanf("%d", &w);
p[i].l = i - 1, p[i].r = i + 1, p[i].val = w - last;
last = w;
q.push((H){p[i].val, i});
}
p[0].val = p[n].val = 0x3f3f3f3f;
for (int i = 1; i <= k; ++i) {
while (vis[q.top().id]) q.pop();
H u = q.top(); q.pop();
ans += u.val;
vis[p[u.id].l] = vis[p[u.id].r] = 1;
p[u.id].val = p[p[u.id].l].val + p[p[u.id].r].val - p[u.id].val;
q.push((H){p[u.id].val, u.id});
del(p[u.id].l), del(p[u.id].r);
}
printf("%d\n", ans);
}
return 0;
}