#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int x=0,t=1;char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if(ch=='-'){t=-1;ch=getchar();}
while(ch<='9'&&ch>='0'){x=x*10+ch-48;ch=getchar();}
return x*t;
}
int t,n,w;
long long ans=0,num;
long long a[100005],tw[50];
bool cmp(long long x,long long y)
{
return x>y;
}
int main()
{
t=read();
for(int i=1;i<=t;i++)
{
n=read(),w=read();
priority_queue<long long> q;
ans=0;
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
a[i]=read();
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++)
{
if(i==1)
{
q.push(w-a[i]);
continue;
}
if(a[i]>q.top())
q.push(w-a[i]);
else
{
q.push(q.top()-a[i]);
q.pop();
}
}
cout<<q.size()<<endl;
}
return 0;
}