#include<stdio.h>
int swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int partition(int array[], int size)
{
int k;
int mid = size/2;
int index = 0;
swap(array, array+mid);
for (k = 1; k < size; k++){
if (array[k] < array[0]){
index++;
swap(array+k, array+index);
}
}
swap(array, array+index);
return index;
}
void sort(int array[], int size)
{
int index;
if (size > 1)
{
index = partition(array, size);
sort(array, index);
sort(array+index+1, size - index-1);
}
}
int search(int a[],int n,int value)
{
int i,f,l,mid;
f=0;
l=n-1;
while(f<=l)
{
mid=(f+l)/2;
if(value==a[mid])
{
return mid;
}
else if(value>a[mid])
f=mid+1;
else
l=mid-1;
}
return -1;
}
int find(int a[],int n,int value)
{
int i,k,finds,j=0,count[21]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},l;
int sum=0;
for(i=0;i<n;++i)
{
//printf("%d ",a[i]);
if(a[i]!=0)
break;
}
if(a[i]==value)
{
a[i]=0;
return 1;
}
else if(a[i]>value)
return 0;
else
{
a[i]=a[i]-2;
finds=search(a,n,value-a[i]);
if(finds!=-1)
{
a[finds]=0;
a[i]=0;
return 1;
}
a[i]=a[i]+2;
}
for(i=0;i<n;++i)
{
sum+=a[i];
//printf(" %d ",sum);
count[j]=i;
++j;
k=0;
if(sum==value)
{
while(--j>=0)
{
if(count[j]!=-1)
a[count[j]]=0;
}
return 1;
}
else if(sum>value)
{
finds=search(a,n,sum-value);//error can be here
//printf("%d",a[finds]);
if(finds!=-1)
{
l=j;
while(--j>=0)
{
if(count[j]!=finds)
a[count[j]]=0;
}
return 1;
}
else
{
while(sum>value)
{
sum=sum-a[count[k]];
count[k]=-1;
++k;
}
if(sum==0)
{
return 0;
}
}
}
}
}
int main()
{
int m,i,t,n,k,x=0,sanskar,sum,diff,check=0;
int a[50];
scanf("%d",&t);
int count;
start:
while(t-->0)
{
sum=0;
count=0;
scanf("%d%d",&n,&k);
for(i=0;i<n;++i)
{
scanf("%d",&a[i]);
sum+=a[i];
}
sort(a,n);
if(sum%k!=0)
printf("no\n");
else if(sum==0)
{
printf("yes");
goto start;
}
else
{
sanskar=sum/k;
sort(a,n);
while(k-->0)
{
check=find(a,n,sanskar);
if(check==0)
{
printf("no\n");
goto start;
}
sort(a,n);
//printf(" %d\n",a[n-1]);
}
//printf("%d",a[n-1]);
if(a[n-1]==0)
{
printf("yes\n");
}
else
printf("no\n");
}
}
}
I2luY2x1ZGU8c3RkaW8uaD4KaW50IHN3YXAoaW50ICphLGludCAqYikKCXsKCQlpbnQgdGVtcDsKCQl0ZW1wPSphOwoJCSphPSpiOwoJCSpiPXRlbXA7Cgl9CmludCBwYXJ0aXRpb24oaW50IGFycmF5W10sIGludCBzaXplKQp7CmludCBrOwppbnQgbWlkID0gc2l6ZS8yOwppbnQgaW5kZXggPSAwOwpzd2FwKGFycmF5LCBhcnJheSttaWQpOwpmb3IgKGsgPSAxOyBrIDwgc2l6ZTsgaysrKXsKaWYgKGFycmF5W2tdIDwgYXJyYXlbMF0pewppbmRleCsrOwpzd2FwKGFycmF5K2ssIGFycmF5K2luZGV4KTsKfQp9CnN3YXAoYXJyYXksIGFycmF5K2luZGV4KTsKcmV0dXJuIGluZGV4Owp9Cgp2b2lkIHNvcnQoaW50IGFycmF5W10sIGludCBzaXplKQp7CmludCBpbmRleDsKaWYgKHNpemUgPiAxKQp7CmluZGV4ID0gcGFydGl0aW9uKGFycmF5LCBzaXplKTsKc29ydChhcnJheSwgaW5kZXgpOwpzb3J0KGFycmF5K2luZGV4KzEsIHNpemUgLSBpbmRleC0xKTsKfQp9CmludCBzZWFyY2goaW50IGFbXSxpbnQgbixpbnQgdmFsdWUpCgl7CgkJaW50IGksZixsLG1pZDsKCQlmPTA7CgkJbD1uLTE7CgkJd2hpbGUoZjw9bCkKCQkJewoJCQkJbWlkPShmK2wpLzI7CgkJCQlpZih2YWx1ZT09YVttaWRdKQoJCQkJewoJCQkJCXJldHVybiBtaWQ7CgkJCQl9CQoJCQkJZWxzZSBpZih2YWx1ZT5hW21pZF0pCgkJCQkJZj1taWQrMTsKCQkJCWVsc2UKCQkJCSAgCWw9bWlkLTE7CgkJCX0KCQlyZXR1cm4gLTE7Cgl9CgkKaW50IGZpbmQoaW50IGFbXSxpbnQgbixpbnQgdmFsdWUpCgl7CgkJaW50IGksayxmaW5kcyxqPTAsY291bnRbMjFdPXstMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMX0sbDsKCQlpbnQgc3VtPTA7CgkJZm9yKGk9MDtpPG47KytpKQoJCQl7CgkJCQkvL3ByaW50ZigiJWQgIixhW2ldKTsKCQkJCWlmKGFbaV0hPTApCgkJCQkJYnJlYWs7CgkJCX0KCQlpZihhW2ldPT12YWx1ZSkKCQkJewoJCQkJYVtpXT0wOwoJCQkJcmV0dXJuIDE7CgkJCX0KCQllbHNlIGlmKGFbaV0+dmFsdWUpCgkJCXJldHVybiAwOwoJCWVsc2UgCgkJCXsKCQkJCWFbaV09YVtpXS0yOwoJCQkJZmluZHM9c2VhcmNoKGEsbix2YWx1ZS1hW2ldKTsKCQkJCWlmKGZpbmRzIT0tMSkKCQkJCQl7CgkJCQkJCWFbZmluZHNdPTA7CgkJCQkJCWFbaV09MDsKCQkJCQkJcmV0dXJuIDE7CgkJCQkJfQoJCQkJYVtpXT1hW2ldKzI7CgkJCX0KCQlmb3IoaT0wO2k8bjsrK2kpCgkJCXsKCQkJCXN1bSs9YVtpXTsKCQkJICAgIC8vcHJpbnRmKCIgJWQgIixzdW0pOwoJCQkJY291bnRbal09aTsKCQkJCSsrajsKCQkJCWs9MDsKCQkJCWlmKHN1bT09dmFsdWUpCgkJCQkJewoJCQkJCQl3aGlsZSgtLWo+PTApCgkJCQkJCQl7CgkJCQkJCQkJaWYoY291bnRbal0hPS0xKQoJCQkJCQkJCWFbY291bnRbal1dPTA7CgkJCQkJCQl9CgkJCQkJCXJldHVybiAxOwoJCQkJCX0KCQkJCWVsc2UgaWYoc3VtPnZhbHVlKQoJCQkJCXsKCQkJCQkJZmluZHM9c2VhcmNoKGEsbixzdW0tdmFsdWUpOy8vZXJyb3IgY2FuIGJlIGhlcmUKCQkJCQkJLy9wcmludGYoIiVkIixhW2ZpbmRzXSk7CgkJCQkJCWlmKGZpbmRzIT0tMSkKCQkJCQkJCXsKCQkJCQkJCQlsPWo7CgkJCQkJCQkJd2hpbGUoLS1qPj0wKQoJCQkJCQkJCQl7CQoJCQkJCQkJCQkJaWYoY291bnRbal0hPWZpbmRzKQkKCQkJCQkJCQkJCQlhW2NvdW50W2pdXT0wOwoJCQkJCQkJCQkJCgkJCQkJCQkJCX0KCQkJCQkJCQkJCXJldHVybiAxOwoJCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJd2hpbGUoc3VtPnZhbHVlKQoJCQkJCQkJewoJCQkJCQkJCXN1bT1zdW0tYVtjb3VudFtrXV07CgkJCQkJCQkJY291bnRba109LTE7CgkJCQkJCQkJKytrOwkKCQkJCQkJCX0KCQkJCQkJaWYoc3VtPT0wKQkKCQkJCQkJCXsKCQkJCQkJCQlyZXR1cm4gMDsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJfQoJfQppbnQgbWFpbigpCgl7CgkJaW50IG0saSx0LG4sayx4PTAsc2Fuc2thcixzdW0sZGlmZixjaGVjaz0wOwoJCWludCBhWzUwXTsKCQlzY2FuZigiJWQiLCZ0KTsKCQlpbnQgY291bnQ7CgkJc3RhcnQ6CgkJd2hpbGUodC0tPjApCgkJCXsKCQkJCXN1bT0wOwoJCQkJY291bnQ9MDsKCQkJCXNjYW5mKCIlZCVkIiwmbiwmayk7CgkJCQlmb3IoaT0wO2k8bjsrK2kpCgkJCQkJewoJCQkJCQlzY2FuZigiJWQiLCZhW2ldKTsKCQkJCQkJc3VtKz1hW2ldOwoJCQkJCX0KCQkJCXNvcnQoYSxuKTsKCQkJCWlmKHN1bSVrIT0wKQoJCQkJCXByaW50Zigibm9cbiIpOwoJCQkJZWxzZSBpZihzdW09PTApCgkJCQkJewoJCQkJCQlwcmludGYoInllcyIpOwoJCQkJCQlnb3RvIHN0YXJ0OwoJCQkJCX0KCQkJCWVsc2UKCQkJCQl7CgkJCQkJCXNhbnNrYXI9c3VtL2s7CgkJCQkJCXNvcnQoYSxuKTsKCQkJCQkJd2hpbGUoay0tPjApCgkJCQkJCQl7CgkJCQkJCQkJY2hlY2s9ZmluZChhLG4sc2Fuc2thcik7CgkJCQkJCQkJaWYoY2hlY2s9PTApCgkJCQkJCQkJCXsKCQkJCQkJCQkJCXByaW50Zigibm9cbiIpOwoJCQkJCQkJCQkJZ290byBzdGFydDsKCQkJCQkJCQkJfQoJCQkJCQkJCXNvcnQoYSxuKTsKCQkJCQkJCQkKCQkJCQkJCQkvL3ByaW50ZigiICVkXG4iLGFbbi0xXSk7CgkJCQkJCQl9CgkJCQkJCS8vcHJpbnRmKCIlZCIsYVtuLTFdKTsKCQkJCQkJaWYoYVtuLTFdPT0wKQoJCQkJCQkJewoJCQkJCQkJCXByaW50ZigieWVzXG4iKTsKCQkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQkJcHJpbnRmKCJub1xuIik7CQoJCQkJCX0KCQkJCQkKCQkJfQoJfQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJ