#include <bits/stdc++.h>
using namespace std;
const int oo = 2e5 + 2;
const int max_r = 1e9;
int n, x;
int a[oo];
bool check(int mid) {
bool bad[oo];
for (int i = 1; i <= n; i++) {
bool l = 0;
if (i > 1 && a[i] - a[i - 1] <= mid) {
l = 1;
}
bool r = 0;
if (i < n && a[i + 1] - a[i] <= mid) {
r = 1;
}
bad[i] = (!l && !r);
}
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (bad[i] == 0) {
continue;
}
cnt++;
if (i < n && bad[i + 1] && a[i + 1] - a[i] <= 2 * mid) {
i++;
}
}
return cnt <= x;
}
void solve() {
cin >> n >> x;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int res = max_r;
int l = 1, r = max_r;
while (l <= r) {
int mid = l + (r - l) / 2;
if (check(mid)) {
res = min(res, mid);
r = mid - 1;
} else {
l = mid + 1;
}
}
cout << res <<'\n';
}
int main() {
int t;
cin >> t;
while(t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgb28gPSAyZTUgKyAyOwpjb25zdCBpbnQgbWF4X3IgPSAxZTk7CgppbnQgbiwgeDsKaW50IGFbb29dOwoKYm9vbCBjaGVjayhpbnQgbWlkKSB7Cglib29sIGJhZFtvb107CgkKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWJvb2wgbCA9IDA7CgkJaWYgKGkgPiAxICYmIGFbaV0gLSBhW2kgLSAxXSA8PSBtaWQpIHsKCQkJbCA9IDE7CgkJfQoJCQoJCWJvb2wgciA9IDA7CgkJaWYgKGkgPCBuICYmIGFbaSArIDFdIC0gYVtpXSA8PSBtaWQpIHsKCQkJciA9IDE7CgkJfQoJCQoJCWJhZFtpXSA9ICghbCAmJiAhcik7Cgl9CgkKCWludCBjbnQgPSAwOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJaWYgKGJhZFtpXSA9PSAwKSB7CgkJCWNvbnRpbnVlOwoJCX0KCQkKCQljbnQrKzsKCQkKCQlpZiAoaSA8IG4gJiYgYmFkW2kgKyAxXSAmJiBhW2kgKyAxXSAtIGFbaV0gPD0gMiAqIG1pZCkgewoJCQlpKys7CgkJfQoJfQoJCglyZXR1cm4gY250IDw9IHg7Cn0KCnZvaWQgc29sdmUoKSB7CgljaW4gPj4gbiA+PiB4OwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJY2luID4+IGFbaV07Cgl9CgkKCWludCByZXMgPSBtYXhfcjsKCWludCBsID0gMSwgciA9IG1heF9yOwoJd2hpbGUgKGwgPD0gcikgewoJCWludCBtaWQgPSBsICsgKHIgLSBsKSAvIDI7CgkJaWYgKGNoZWNrKG1pZCkpIHsKCQkJcmVzID0gbWluKHJlcywgbWlkKTsKCQkJciA9IG1pZCAtIDE7CgkJfSBlbHNlIHsKCQkJbCA9IG1pZCArIDE7CgkJfQoJfQoJCgljb3V0IDw8IHJlcyA8PCdcbic7Cn0KCmludCBtYWluKCkgewoJCglpbnQgdDsKCWNpbiA+PiB0OwoJd2hpbGUodC0tKSB7CgkJc29sdmUoKTsKCX0KCQoJcmV0dXJuIDA7Cn0=