#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define ld long double
#define rd(a) cin>>a
#define pt(a) cout<<a
#define pb push_back
#define mp make_pair
#define cl endl
#define ifor(i,a,b) for(i=a;i<=b;i++)
#define dfor(i,a,b) for(i=a;i>=b;i--)
#define pii pair<int,int>
#define sz 100000
#define mad 1000000007
ll tree[4*sz +5];
ll a[sz+5],b[sz+5];
ll n,s;
vector<pair<ll,ll>> v;
ll maxi(ll a,ll b) {
if(a>=b) return a;
else return b;
}
ll mini(ll a,ll b) {
if(a>=b) return b;
else return a;
}
ll query(ll node,ll s,ll e,ll l,ll r) {
if(s>r || l>e) return 0;
if(s>=l && e<=r) return tree[node];
ll mid=(s+e)/2;
ll p1=query(2*node,s,mid,l,r);
ll p2=query(2*node +1,mid+1,e,l,r);
return max(p1,p2);
}
void update(ll node,ll s,ll e,ll idx,ll val) {
if(s==e) {
//cout<<"node="<<node<<"\n";
tree[node]=val;
}
else {
ll mid=(s+e)/2;
if(s<=idx && idx<=mid) {
update(2*node,s,mid,idx,val);
}
else {
update(2*node +1,mid+1,e,idx,val);
}
tree[node]=maxi(tree[2*node],tree[2*node +1]);
}
}
ll f(ll k) {
memset(tree,0,sizeof(ll)*(sz));
memset( b,0,sizeof(ll)*(sz+5));
ll i,j;
ll p,q;
ll l,r;
for(i=1;i<=v.size()-1;i++) {
j=i+1;
while(v[j].first==v[i].first) {
j++;
}
for(p=i;p<=j-1;p++) {
l=maxi(1,v[p].second-k); r=mini(n,v[p].second+k);
b[p]=query(1,1,n,l,r) +1;
}
for(p=i;p<=j-1;p++) {
ll cm=b[p];
q=p+1;
while((v[q-1].second + k)>=(v[q].second) && q<=(j-1)) {
cm=maxi(cm,b[q]);
q++;
}
for(int c=p;c<=(q-1);c++) {
b[c]=cm;
}
p=q-1;
}
for(p=i;p<=j-1;p++) {
update(1,1,n,v[p].second,b[p]);
}
i=j-1;
}
ll sum=0;
for(i=1;i<=n;i++) {
sum=sum + b[i];
}
if(sum<=s) return 1;
else return 0;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;cin>>t;
ll i,j,k;
while(t--) {
cin>>n>>s;
v.pb(mp(0,0));
for(i=1;i<=n;i++) {
cin>>a[i];
v.pb(mp(a[i],i));
}
sort(v.begin(),v.end());
ll low=0,high=n,ans=-1;
while(low<=high) {
ll mid=(low+high)/2;
if(f(mid)) {
ans=mid;
low=mid+1;
}
else {
high=mid-1;
}
}
cout<<ans+1<<"\n";
v.clear();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAojZGVmaW5lICAgIGxsICAgICAgICAgICAgICBsb25nIGxvbmcgaW50CiNkZWZpbmUgICAgbGQgICAgICAgICAgICAgIGxvbmcgZG91YmxlCiNkZWZpbmUgICAgcmQoYSkgICAgICAgICAgIGNpbj4+YQojZGVmaW5lICAgIHB0KGEpICAgICAgICAgICBjb3V0PDxhCiNkZWZpbmUgICAgcGIgICAgICAgICAgICAgIHB1c2hfYmFjawojZGVmaW5lICAgIG1wICAgICAgICAgICAgICBtYWtlX3BhaXIKI2RlZmluZSAgICBjbCAgICAgICAgICAgICAgZW5kbAojZGVmaW5lICAgIGlmb3IoaSxhLGIpICAgICBmb3IoaT1hO2k8PWI7aSsrKQojZGVmaW5lICAgIGRmb3IoaSxhLGIpICAgICBmb3IoaT1hO2k+PWI7aS0tKQojZGVmaW5lICAgIHBpaSAgICAgICAgICAgICBwYWlyPGludCxpbnQ+CiNkZWZpbmUgICAgc3ogICAgICAgICAgICAgIDEwMDAwMAojZGVmaW5lICAgIG1hZCAgICAgICAgICAgICAxMDAwMDAwMDA3CiAKbGwgdHJlZVs0KnN6ICs1XTsKbGwgYVtzeis1XSxiW3N6KzVdOwpsbCBuLHM7CnZlY3RvcjxwYWlyPGxsLGxsPj4gdjsKIApsbCBtYXhpKGxsIGEsbGwgYikgewogICAgCiAgICBpZihhPj1iKSByZXR1cm4gYTsKICAgIGVsc2UgcmV0dXJuIGI7Cn0KbGwgbWluaShsbCBhLGxsIGIpIHsKICAgIAogICAgaWYoYT49YikgcmV0dXJuIGI7CiAgICBlbHNlIHJldHVybiBhOwp9CiAKbGwgcXVlcnkobGwgbm9kZSxsbCBzLGxsIGUsbGwgbCxsbCByKSB7CiAgICAKICAgIGlmKHM+ciB8fCBsPmUpIHJldHVybiAwOwogICAgCiAgICBpZihzPj1sICYmIGU8PXIpIHJldHVybiB0cmVlW25vZGVdOwogICAgCiAgICBsbCBtaWQ9KHMrZSkvMjsKICAgIAogICAgbGwgcDE9cXVlcnkoMipub2RlLHMsbWlkLGwscik7CiAgICBsbCBwMj1xdWVyeSgyKm5vZGUgKzEsbWlkKzEsZSxsLHIpOwogICAgCiAgICByZXR1cm4gbWF4KHAxLHAyKTsKfQogCnZvaWQgdXBkYXRlKGxsIG5vZGUsbGwgcyxsbCBlLGxsIGlkeCxsbCB2YWwpIHsKICAgIAogICAgaWYocz09ZSkgewogICAgICAgIAogICAgICAgIC8vY291dDw8Im5vZGU9Ijw8bm9kZTw8IlxuIjsKICAgICAgICB0cmVlW25vZGVdPXZhbDsKICAgIH0KICAgIGVsc2UgewogICAgICAgIAogICAgICAgIGxsIG1pZD0ocytlKS8yOwogICAgICAgIAogICAgICAgIGlmKHM8PWlkeCAmJiBpZHg8PW1pZCkgewogICAgICAgICAgICB1cGRhdGUoMipub2RlLHMsbWlkLGlkeCx2YWwpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdXBkYXRlKDIqbm9kZSArMSxtaWQrMSxlLGlkeCx2YWwpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB0cmVlW25vZGVdPW1heGkodHJlZVsyKm5vZGVdLHRyZWVbMipub2RlICsxXSk7CiAgICB9Cn0KIApsbCBmKGxsIGspIHsKICAgIAogICAgbWVtc2V0KHRyZWUsMCxzaXplb2YobGwpKihzeikpOwogICAgbWVtc2V0KCBiLDAsc2l6ZW9mKGxsKSooc3orNSkpOwogICAgCiAgICBsbCBpLGo7CiAgICBsbCBwLHE7CiAgICBsbCBsLHI7CiAgICBmb3IoaT0xO2k8PXYuc2l6ZSgpLTE7aSsrKSB7CiAgICAgICAgCiAgICAgICAgaj1pKzE7CiAgICAgICAgd2hpbGUodltqXS5maXJzdD09dltpXS5maXJzdCkgewogICAgICAgICAgICBqKys7CiAgICAgICAgfQogICAgICAgIGZvcihwPWk7cDw9ai0xO3ArKykgewogICAgICAgICAgICAKICAgICAgICAgICAgbD1tYXhpKDEsdltwXS5zZWNvbmQtayk7IHI9bWluaShuLHZbcF0uc2Vjb25kK2spOwogICAgICAgICAgICBiW3BdPXF1ZXJ5KDEsMSxuLGwscikgKzE7CiAgICAgICAgfQogICAgCiAgICAgICAgZm9yKHA9aTtwPD1qLTE7cCsrKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICBsbCBjbT1iW3BdOwogICAgICAgICAgICBxPXArMTsKICAgICAgICAgICAgd2hpbGUoKHZbcS0xXS5zZWNvbmQgKyBrKT49KHZbcV0uc2Vjb25kKSAmJiBxPD0oai0xKSkgewogICAgICAgICAgICAgICAgY209bWF4aShjbSxiW3FdKTsKICAgICAgICAgICAgICAgIHErKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yKGludCBjPXA7Yzw9KHEtMSk7YysrKSB7CiAgICAgICAgICAgICAgICBiW2NdPWNtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHA9cS0xOwogICAgICAgIH0KICAgICAgICBmb3IocD1pO3A8PWotMTtwKyspIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIHVwZGF0ZSgxLDEsbix2W3BdLnNlY29uZCxiW3BdKTsKICAgICAgICB9CiAgICAgICAgaT1qLTE7CiAgICB9CiAgICAKICAgIGxsIHN1bT0wOwogICAgZm9yKGk9MTtpPD1uO2krKykgewogICAgICAgIHN1bT1zdW0gKyBiW2ldOwogICAgfQogICAgaWYoc3VtPD1zKSByZXR1cm4gMTsKICAgIGVsc2UgcmV0dXJuIDA7Cn0KaW50IG1haW4oKSB7CiAgICAKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICAKICAgIGludCB0O2Npbj4+dDsKICAgIGxsIGksaixrOwogICAgCiAgICB3aGlsZSh0LS0pIHsKICAgICAgICAKICAgICAgICBjaW4+Pm4+PnM7CiAgICAgICAgCiAgICAgICAgdi5wYihtcCgwLDApKTsKICAgICAgICBmb3IoaT0xO2k8PW47aSsrKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICBjaW4+PmFbaV07CiAgICAgICAgICAgIHYucGIobXAoYVtpXSxpKSk7CiAgICAgICAgfQogICAgICAgIHNvcnQodi5iZWdpbigpLHYuZW5kKCkpOwogICAgCiAgICAgICAgbGwgbG93PTAsaGlnaD1uLGFucz0tMTsKICAgICAgICAKICAgICAgICB3aGlsZShsb3c8PWhpZ2gpIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIGxsIG1pZD0obG93K2hpZ2gpLzI7CiAgICAgICAgICAgIGlmKGYobWlkKSkgewogICAgICAgICAgICAgICAgYW5zPW1pZDsKICAgICAgICAgICAgICAgIGxvdz1taWQrMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGhpZ2g9bWlkLTE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY291dDw8YW5zKzE8PCJcbiI7CiAgICAgICAgdi5jbGVhcigpOwogICAgfQp9ICAg