#include<bits/stdc++.h>
using namespace std;
const int maxn=5e5;
int t,n,m,b[maxn];
struct node{
int time,id;
}a[maxn];
vector<int> win;
int cmp(node a,node b){
return a.time<b.time||a.time==b.time&&a.id<b.id;
}
void solve(){
win.clear();
memset(b,0,sizeof b);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].time;
a[i].id=i;
}
sort(a+1,a+n+1,cmp);
int x=0,pos=0;
for(int i=1;i<=n;i++) b[i]=i;
for(int i=1;x+a[i].time<=m&&i<=n;i++){
int y=x+a[i].time;
int mostoptimal=a[i].id;
if(i<=n&&y+a[i+1].time>m){
while(x+a[i].time<=m&&i<=n){
mostoptimal=max(a[i].id,mostoptimal);
i++;
}
i--;
}
win.push_back(mostoptimal);
}
for(int i=0;i<win.size();i++) b[win[i]]--;
b[n+1]=win.size();
sort(b+1,b+n+2,greater<int>());
for(int i=1;i<=n+1;i++){
if(b[i]==win.size()){
cout<<i<<endl;
return ;
}
}
}
signed main(){
cin>>t;
while(t--) solve();
return 0;
}