#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int przyklad = -1;
int bin_search(int l,int p,int wyn,int *tab){
if(l<=p){
int sr = (l+p)/2;
if(tab[sr] == wyn) return sr;
if(tab[sr]<=wyn){
przyklad = sr;
return bin_search(sr+1,p,wyn,tab);
}
if(tab[sr]>wyn) return bin_search(l,sr-1,wyn,tab);
}
return przyklad;
}
void fun (){
int n,w,wynik=0,pom=0;
cin>>n>>w;
int *tab = new int[n];
for(int i=0;i<n;i++)
cin>>tab[i];
przyklad = -1;
for(int i=0;i<n;i++){
if(tab[i]!=0){
pom = tab[i];
tab[i] = 0;
sort(tab,tab+n);
if(bin_search(i+1,n-1,w-pom,tab)!= -1){
tab[bin_search(i+1,n-1,w-pom,tab)] = 0;
}
wynik++;
}
}
cout<<wynik<<endl;
}
int main()
{
std::ios::sync_with_stdio(false);
int n;
cin>>n;
while(n--){
fun();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiAgICBpbnQgcHJ6eWtsYWQgPSAtMTsKCiAgICBpbnQgYmluX3NlYXJjaChpbnQgbCxpbnQgcCxpbnQgd3luLGludCAqdGFiKXsKICAgICAgICBpZihsPD1wKXsKICAgICAgICAgICAgaW50IHNyID0gKGwrcCkvMjsKICAgICAgICAgICAgaWYodGFiW3NyXSA9PSB3eW4pIHJldHVybiBzcjsKICAgICAgICAgICAgaWYodGFiW3NyXTw9d3luKXsKICAgICAgICAgICAgICAgIHByenlrbGFkID0gc3I7CiAgICAgICAgICAgICAgICByZXR1cm4gYmluX3NlYXJjaChzcisxLHAsd3luLHRhYik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYodGFiW3NyXT53eW4pIHJldHVybiBiaW5fc2VhcmNoKGwsc3ItMSx3eW4sdGFiKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwcnp5a2xhZDsKCiAgICB9CgogICAgdm9pZCBmdW4gKCl7CiAgICAgICAgaW50IG4sdyx3eW5paz0wLHBvbT0wOwogICAgICAgIGNpbj4+bj4+dzsKICAgICAgICBpbnQgKnRhYiA9IG5ldyBpbnRbbl07CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykKICAgICAgICAgICAgY2luPj50YWJbaV07CgogICAgICAgIHByenlrbGFkID0gLTE7CgogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgICAgICBpZih0YWJbaV0hPTApewogICAgICAgICAgICAgICAgcG9tID0gdGFiW2ldOwogICAgICAgICAgICAgICB0YWJbaV0gPSAwOwogICAgICAgICAgICAgICBzb3J0KHRhYix0YWIrbik7CiAgICAgICAgICAgICAgIGlmKGJpbl9zZWFyY2goaSsxLG4tMSx3LXBvbSx0YWIpIT0gLTEpewogICAgICAgICAgICAgICAgdGFiW2Jpbl9zZWFyY2goaSsxLG4tMSx3LXBvbSx0YWIpXSA9IDA7CgogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIHd5bmlrKys7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGNvdXQ8PHd5bmlrPDxlbmRsOwoKICAgIH0KCmludCBtYWluKCkKewogICAgc3RkOjppb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBpbnQgbjsKICAgIGNpbj4+bjsKICAgIHdoaWxlKG4tLSl7CiAgICAgICAgZnVuKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=