#include<iostream>
#define max(a,b) (a>b)?a:b
using namespace std;
int main()
{
int t,non,amount;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&non,&amount);
int arr[non+1],i,w;
for(i=1;i<=non;i++)
{
scanf("%d",&arr[i]);
}
int V[non+1][amount+1];
for(w=0;w<=amount;w++)
V[0][w]=0;
for(w=0;w<=non;w++)
V[w][0]=0;
for(i=1;i<=non;i++)
for(w=1;w<=amount;w++)
{
if(arr[i]<=w) //weight of this item is less than the sub problem weight
{V[i][w]=max(V[i-1][w],arr[i]+V[i-1][w-arr[i]]);}
else
{V[i][w]=V[i-1][w];}
}
if(V[non][amount] == amount)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNkZWZpbmUgbWF4KGEsYikgKGE+Yik/YTpiCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCkKewppbnQgdCxub24sYW1vdW50OwpzY2FuZigiJWQiLCZ0KTsKd2hpbGUodC0tKQp7CnNjYW5mKCIlZCAlZCIsJm5vbiwmYW1vdW50KTsKaW50IGFycltub24rMV0saSx3Owpmb3IoaT0xO2k8PW5vbjtpKyspCnsKc2NhbmYoIiVkIiwmYXJyW2ldKTsKfQoKaW50IFZbbm9uKzFdW2Ftb3VudCsxXTsKZm9yKHc9MDt3PD1hbW91bnQ7dysrKQpWWzBdW3ddPTA7CmZvcih3PTA7dzw9bm9uO3crKykKVlt3XVswXT0wOwpmb3IoaT0xO2k8PW5vbjtpKyspCmZvcih3PTE7dzw9YW1vdW50O3crKykKewppZihhcnJbaV08PXcpIC8vd2VpZ2h0IG9mIHRoaXMgaXRlbSBpcyBsZXNzIHRoYW4gdGhlIHN1YiBwcm9ibGVtIHdlaWdodAp7VltpXVt3XT1tYXgoVltpLTFdW3ddLGFycltpXStWW2ktMV1bdy1hcnJbaV1dKTt9CmVsc2UKe1ZbaV1bd109VltpLTFdW3ddO30KfQogCmlmKFZbbm9uXVthbW91bnRdID09IGFtb3VudCkKY291dDw8IlllcyI8PGVuZGw7CmVsc2UKY291dDw8Ik5vIjw8ZW5kbDsKfQpyZXR1cm4gMDsKfQ==