#include <bits/stdc++.h>
using namespace std;
#define maxn 10005int dp[maxn][5005];
int n, m, que[maxn];
int a[maxn];
int up (int i, int j, int k) {
return dp[i][k]+a[i+1]*a[i+1] - (dp[j][k]+a[j+1]*a[j+1]);
}
int down (int i, int j, int k) {
return2*(a[i+1]-a[j+1]);
}
int main () {
int kase = 0, t;
scanf ("%d", &t);
while (t--) {
printf ("Case %d: ", ++kase);
scanf ("%d%d", &n, &m);
for (int i = 1; i <= n; i++) scanf ("%d", &a[i]);
if (m >= n) {
printf ("0\n");
continue;
}
m--;
sort (a+1, a+1+n);
for (int i = 1; i <= n; i++) dp[i][0] = (a[i]-a[1])*(a[i]-a[1]);
for (int k = 1; k <= m; k++) {
int L = 0, R = 0;
que[R++] = 0;
for (int i = 1; i <= n; i++) {
while (L+1 < R && up (que[L+1], que[L], k-1) <= a[i]*down (que[L+1], que[L], k-1))
L++;
int j = que[L];
dp[i][k] = dp[j][k-1] + (a[i]-a[j+1])*(a[i]-a[j+1]);
while (L+1 < R && up (i, que[R-1], k-1)*down (que[R-1], que[R-2], k-1) <=
up (que[R-1], que[R-2], k-1)*down (i, que[R-1], k-1))
R--;
que[R++] = i;
}
}
printf ("%d\n", dp[n][m]);
}
return0;
}