← Home
#include<bits/stdc++.h>
using namespace std;

int i,n,m,t,a[1<<19],li,pos[1<<19][2];

bool fuck(){
	int i,j,k,tot=20;
	for(i=li;i>=1;i--){
		basic_string<int> q;
		for(j=i;j<=li;j+=i)for(k=0;k<=1;k++)if(pos[j][k])q+=pos[j][k];
		for(auto x:q)for(auto y:q)if(x<y){
			tot--;
			k=INT_MAX; for(j=1;j<=n;j++)if(j!=x&&j!=y)k&=a[j]; k+=m;
			if(i>k){
				printf("YES\n2 %d %d\n%d ",a[x],a[y],n-2);
				for(i=1;i<=n;i++)if(i!=x&&i!=y)cout<<a[i]<<' '; cout<<'\n';
				return 1;
			}
			if(tot<=0)return 0;
		}
	}
	return 0;
}

int main(){
	for(cin>>t;t;t--){
		cin>>n>>m;
		for(i=li=1;i<=n;i++){cin>>a[i]; li=max(li,a[i]);}
		memset(pos,0,li*8+50);
		for(i=1;i<=n;i++)pos[a[i]][!!pos[a[i]][0]]=i;
		if(!fuck())puts("NO");
	}
}