 #include<iostream>
#include<iostream>
 #include<algorithm>
#include<algorithm>
 using namespace std;
using namespace std;

 int a[5005];
int a[5005];
 int dp[1001][5005];
int dp[1001][5005];

 bool cmp(int a,int b)
bool cmp(int a,int b)


 {
{
 return a > b;
    return a > b;
 }
}

 int getMin(int a,int b)
int getMin(int a,int b)


 {
{
 if(a < b)
    if(a < b)
 return a;
        return a;
 else
    else 
 return b;
        return b;
 }
}

 int main()
int main()


 {
{
 int text;
    int text;
 cin>>text;
    cin>>text;
 while(text--)
    while(text--)

 
     {
{
 int k,n;
        int k,n;
 int i,j;
        int i,j;
 cin>>k>>n;
        cin>>k>>n;
 for(i = 1;i <= n; i++ )
        for(i = 1;i <= n; i++ )
 cin>>a[i];
            cin>>a[i];
 k = k+8;
        k = k+8;
 sort(a+1,a+n+1,cmp);
        sort(a+1,a+n+1,cmp);
 memset(dp,0,sizeof(dp));
        memset(dp,0,sizeof(dp));
 for(i = 1;i <= k;i++)
        for(i = 1;i <= k;i++)

 
         {
{
 dp[i][3*i] = dp[i-1][3*i-2] + (a[i*3]-a[i*3-1])*(a[i*3]-a[i*3-1]);
            dp[i][3*i] = dp[i-1][3*i-2] + (a[i*3]-a[i*3-1])*(a[i*3]-a[i*3-1]);
 for(j = 3*i+1 ; j <= n ;j++)
            for(j = 3*i+1 ; j <= n ;j++)

 
             {
{
 dp[i][j] = getMin(dp[i][j-1],dp[i-1][j-2] + (a[j]-a[j-1])*(a[j]-a[j-1]));
                dp[i][j] = getMin(dp[i][j-1],dp[i-1][j-2] + (a[j]-a[j-1])*(a[j]-a[j-1]));
 }
            }
 }
        }
 cout<<dp[k][n]<<endl;
        cout<<dp[k][n]<<endl;    
 }
    }
 return 0;
    return 0;
 }
}