fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. int gcd(int a, int b){
  6. if(!b) return a;
  7. return gcd(b,a%b);
  8. }
  9.  
  10. int f(vector<int> &v){ // return v.size() if not possible
  11. int g = 0;
  12. for(int x: v)
  13. g = gcd(x,g);
  14. int i=0;
  15. while(i<v.size())
  16. if(v[i]!=g) break;
  17. else i++;
  18. return i;
  19. }
  20.  
  21. int main() {
  22. int t,n,x;
  23. vector<int> v;
  24. cin>>t;
  25. while(t--){
  26. cin>>n;
  27. v.clear();
  28. while(n--){
  29. cin>>x;
  30. v.push_back(x);
  31. }
  32. n = v.size();
  33. x = f(v);
  34. cout<<((x==n)?"NO":"YES")<<endl;
  35. if(x!=n){
  36. for(int i=0; i<n; i++)
  37. cout<<((i==x)?"2":"1")<<' ';
  38. cout<<endl;
  39. }
  40. }
  41. return 0;
  42. }
Success #stdin #stdout 0.01s 5320KB
stdin
3
4
1 20 51 9
4
5 5 5 5
3
1 2 2
stdout
YES
1 2 1 1 
NO
YES
1 2 1