#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,c,arr[100001];
bool whetherpossible(int dist){
//checks whether cows can be placed with minimum distance dist between any two
int i,cows_placed = 1; long long lastpos=arr[0];
for(i=1;i<n;i++){
if(arr[i]-lastpos>=dist){
lastpos = arr[i];
cows_placed++;
if(cows_placed==c) return true;
}
}
return false;
}
int binarysearch(){
int mid,start=0,end=arr[n-1]-arr[0];
while(start<end){
mid = (start+end)/2;
if(whetherpossible(mid)) start = mid + 1;
else end = mid;
}
return start-1;
}
int main() {
// your code goes here
int i,test;
scanf("%d",&test);
while(test--){
scanf("%d%d",&n,&c);
for(i=0;i<n;i++) scanf("%d",&arr[i]);
sort(arr,arr+n);
printf("%d\n",binarysearch());
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbixjLGFyclsxMDAwMDFdOwogCmJvb2wgd2hldGhlcnBvc3NpYmxlKGludCBkaXN0KXsKCS8vY2hlY2tzIHdoZXRoZXIgY293cyBjYW4gYmUgcGxhY2VkIHdpdGggbWluaW11bSBkaXN0YW5jZSBkaXN0IGJldHdlZW4gYW55IHR3bwoJaW50IGksY293c19wbGFjZWQgPSAxOyBsb25nIGxvbmcgbGFzdHBvcz1hcnJbMF07Cglmb3IoaT0xO2k8bjtpKyspewoJCWlmKGFycltpXS1sYXN0cG9zPj1kaXN0KXsKCQkJbGFzdHBvcyA9IGFycltpXTsKCQkJY293c19wbGFjZWQrKzsKCQkJaWYoY293c19wbGFjZWQ9PWMpIHJldHVybiB0cnVlOwoJCX0KCX0KCXJldHVybiBmYWxzZTsKfQogCmludCBiaW5hcnlzZWFyY2goKXsKCWludCBtaWQsc3RhcnQ9MCxlbmQ9YXJyW24tMV0tYXJyWzBdOwoJd2hpbGUoc3RhcnQ8ZW5kKXsKCQltaWQgPSAoc3RhcnQrZW5kKS8yOwoJCWlmKHdoZXRoZXJwb3NzaWJsZShtaWQpKQlzdGFydCA9IG1pZCArIDE7CgkJZWxzZSBlbmQgPSBtaWQ7Cgl9CglyZXR1cm4gc3RhcnQtMTsKfQppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCBpLHRlc3Q7CglzY2FuZigiJWQiLCZ0ZXN0KTsKCXdoaWxlKHRlc3QtLSl7CgkJc2NhbmYoIiVkJWQiLCZuLCZjKTsKCQlmb3IoaT0wO2k8bjtpKyspCXNjYW5mKCIlZCIsJmFycltpXSk7CgkJc29ydChhcnIsYXJyK24pOwoJCXByaW50ZigiJWRcbiIsYmluYXJ5c2VhcmNoKCkpOwoJfQoJcmV0dXJuIDA7Cn0KIA==