#include<bits/stdc++.h>
using namespace std;
// Aggressive cows
struct cowpp
{
int profit;
int position;
};
map<string,cowpp> m;
cowpp LargestMinimumDistance(int c,vector<int> v,int l,int r)
{
string key = to_string(c+l+r);
if(m.find(key)!=m.end())
{
return m[key];
}
cowpp result;
if(l>=r||c<2)
{
// cout<<"As per question, this block shouldn't get executed\n";
result.profit=0;
result.position=0;
m[key]=result;
return m[key];
}
if(c==2)
{
result.profit=v[r]-v[l];
result.position=l;
// cout<<"27...."<<result.profit<<"\n";
m[key]=result;
return m[key];
}
if(r-l+1==c)
{
result.position = l;
result.profit = INT_MAX;
for(int i=l;i<r;i++)
{
if(result.profit>(v[i+1]-v[i]))
{
result.position=i;
result.profit = (v[i+1]-v[i]);
}
}
// cout<<"43...."<<result.profit<<"\n";
m[key]=result;
return m[key];
}
result.profit = INT_MIN;
result.position = l;
for(int i=l;i<=l+(r-c+1);i++)
{
// cout<<"for range "<<l<<", "<<l+(r-c+1)<<"\n";
// cout<<"now i is "<<i<<"\n";
for(int j=i+1;j<=(i+1)+r-c+1;j++){
cowpp temp = LargestMinimumDistance(c-1,v,j,r);
// cout<<"temp position is "<<temp.position<<"\n";
// cout<<"temp profit is "<<temp.profit<<"\n";
int profit = min(v[temp.position]-v[i],temp.profit);
// cout<<"now profit for i with "<<i<<" and range "<<l<<", "<<l+(r-c+1)<<" is "<<profit<<"\n";
if(result.profit<profit)
{
result.profit = profit;
result.position=i;
}
}
}
m[key]=result;
return m[key];
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,c;
cin>>n>>c;
vector<int> v;
for(int i=0;i<n;i++)
{
int a;
cin>>a;
v.push_back(a);
}
sort(v.begin(),v.end());
vector<int>::iterator it;
cowpp result = LargestMinimumDistance(c,v,0,n-1);
cout<<result.profit<<"\n";
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEFnZ3Jlc3NpdmUgY293cwpzdHJ1Y3QgY293cHAKewogICAgaW50IHByb2ZpdDsKICAgIGludCBwb3NpdGlvbjsKfTsKCm1hcDxzdHJpbmcsY293cHA+IG07Cgpjb3dwcCBMYXJnZXN0TWluaW11bURpc3RhbmNlKGludCBjLHZlY3RvcjxpbnQ+IHYsaW50IGwsaW50IHIpCnsKICAgIAogICAgc3RyaW5nIGtleSA9IHRvX3N0cmluZyhjK2wrcik7CiAgICBpZihtLmZpbmQoa2V5KSE9bS5lbmQoKSkKICAgIHsKICAgICAgICByZXR1cm4gbVtrZXldOwogICAgfQogICAgCiAgICBjb3dwcCByZXN1bHQ7CiAgICBpZihsPj1yfHxjPDIpCiAgICB7Ci8vICAgICAgICBjb3V0PDwiQXMgcGVyIHF1ZXN0aW9uLCB0aGlzIGJsb2NrIHNob3VsZG4ndCBnZXQgZXhlY3V0ZWRcbiI7CiAgICAgICAgcmVzdWx0LnByb2ZpdD0wOwogICAgICAgIHJlc3VsdC5wb3NpdGlvbj0wOwogICAgICAgIG1ba2V5XT1yZXN1bHQ7CiAgICAgICAgcmV0dXJuIG1ba2V5XTsKICAgIH0KICAgIAogICAgaWYoYz09MikKICAgIHsKICAgICAgICByZXN1bHQucHJvZml0PXZbcl0tdltsXTsKICAgICAgICByZXN1bHQucG9zaXRpb249bDsKLy8gICAgICAgIGNvdXQ8PCIyNy4uLi4iPDxyZXN1bHQucHJvZml0PDwiXG4iOwogICAgICAgIG1ba2V5XT1yZXN1bHQ7CiAgICAgICAgcmV0dXJuIG1ba2V5XTsKICAgIH0KICAgIAogICAgaWYoci1sKzE9PWMpCiAgICB7CiAgICAgICAgcmVzdWx0LnBvc2l0aW9uID0gbDsKICAgICAgICByZXN1bHQucHJvZml0ID0gSU5UX01BWDsKICAgICAgICBmb3IoaW50IGk9bDtpPHI7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYocmVzdWx0LnByb2ZpdD4odltpKzFdLXZbaV0pKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXN1bHQucG9zaXRpb249aTsKICAgICAgICAgICAgICAgIHJlc3VsdC5wcm9maXQgPSAodltpKzFdLXZbaV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQovLyAgICAgICAgY291dDw8IjQzLi4uLiI8PHJlc3VsdC5wcm9maXQ8PCJcbiI7CiAgICAgICAgbVtrZXldPXJlc3VsdDsKICAgICAgICByZXR1cm4gbVtrZXldOwogICAgfQoKICAgIHJlc3VsdC5wcm9maXQgPSBJTlRfTUlOOwogICAgcmVzdWx0LnBvc2l0aW9uID0gbDsKICAgIGZvcihpbnQgaT1sO2k8PWwrKHItYysxKTtpKyspCiAgICB7Ci8vICAgICAgICBjb3V0PDwiZm9yIHJhbmdlICI8PGw8PCIsICI8PGwrKHItYysxKTw8IlxuIjsKLy8gICAgICAgIGNvdXQ8PCJub3cgaSBpcyAiPDxpPDwiXG4iOwogICAgICAgIGZvcihpbnQgaj1pKzE7ajw9KGkrMSkrci1jKzE7aisrKXsKICAgICAgICAgICAgY293cHAgdGVtcCA9IExhcmdlc3RNaW5pbXVtRGlzdGFuY2UoYy0xLHYsaixyKTsKLy8gICAgICAgIGNvdXQ8PCJ0ZW1wIHBvc2l0aW9uIGlzICI8PHRlbXAucG9zaXRpb248PCJcbiI7Ci8vICAgICAgICBjb3V0PDwidGVtcCBwcm9maXQgaXMgIjw8dGVtcC5wcm9maXQ8PCJcbiI7CiAgICAgICAgICAgIGludCBwcm9maXQgPSBtaW4odlt0ZW1wLnBvc2l0aW9uXS12W2ldLHRlbXAucHJvZml0KTsKLy8gICAgICAgIGNvdXQ8PCJub3cgcHJvZml0IGZvciBpIHdpdGggIjw8aTw8IiBhbmQgcmFuZ2UgIjw8bDw8IiwgIjw8bCsoci1jKzEpPDwiIGlzICI8PHByb2ZpdDw8IlxuIjsKICAgICAgICAgICAgaWYocmVzdWx0LnByb2ZpdDxwcm9maXQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJlc3VsdC5wcm9maXQgPSBwcm9maXQ7CiAgICAgICAgICAgICAgICByZXN1bHQucG9zaXRpb249aTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIG1ba2V5XT1yZXN1bHQ7CiAgICByZXR1cm4gbVtrZXldOwp9CgppbnQgbWFpbigpCnsKICAgIGludCB0OwogICAgY2luPj50OwogICAgd2hpbGUodC0tKQogICAgewogICAgICAgIGludCBuLGM7CiAgICAgICAgY2luPj5uPj5jOwogICAgICAgIHZlY3RvcjxpbnQ+IHY7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGludCBhOwogICAgICAgICAgICBjaW4+PmE7CiAgICAgICAgICAgIHYucHVzaF9iYWNrKGEpOwogICAgICAgIH0KICAgICAgICBzb3J0KHYuYmVnaW4oKSx2LmVuZCgpKTsKICAgICAgICB2ZWN0b3I8aW50Pjo6aXRlcmF0b3IgaXQ7CiAgICAgICAgY293cHAgcmVzdWx0ID0gTGFyZ2VzdE1pbmltdW1EaXN0YW5jZShjLHYsMCxuLTEpOwogICAgICAgIGNvdXQ8PHJlc3VsdC5wcm9maXQ8PCJcbiI7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=