//首先排除所有数相等的情况,再把最大值放在一个组,那么最大值的gcd就等于其本身,再判断剩下的gcd是否等于最大值就可以了 #include<bits/stdc++.h> using namespace std; const int N=1e3+100; int a[N]; map<int,int>mapp; int main(){ int t; cin>>t; while(t--){ int n; cin>>n; mapp.clear(); int maxn=-1; for(int i=1;i<=n;i++){ cin>>a[i]; mapp[a[i]]++; maxn=max(maxn,a[i]); } if(mapp[maxn]==n){ cout<<"NO"<<endl; }else{ int num=a[1]; int flag=0; int x; for(int i=2;i<=n;i++){ if(a[i]==maxn){ flag=1; x=i; continue; } num=__gcd(num,a[i]); } if(num!=maxn){ cout<<"YES"<<endl; int u=0; for(int i=1;i<=n;i++){ if(a[i]==maxn){ u=1; cout<<2<<" "; continue; } cout<<1<<" "; } cout<<endl; }else{ cout<<"NO"<<endl; } } } }