#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) { return (!b ? a : gcd(b, a % b)); }
int n, allgcd;
vector<pair<int, int> > vec;
vector<int> ans;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ;
  cin >> n;
  vec.resize(n);
  ans.resize(n);
  int g;
  for (int i = 0; i < n; i++) {
    cin >> vec[i].first;
    vec[i].second = i;
    g = (i ? gcd(g, vec[i].first) : vec[i].first);
  }
  time_t stt = clock(), endd;
  if (g > 1) {
    cout << "NO" << endl;
    return 0;
  }
  pair<int, int> p;
  do {
    random_shuffle(vec.begin(), vec.end());
    p.first = vec[0].first;
    p.second = vec[1].first;
    ans[vec[0].second] = 0;
    ans[vec[1].second] = 1;
    for (int i = 2; i < n; i++) {
      if (gcd(p.first, vec[i].first) < p.first) {
        p.first = gcd(p.first, vec[i].first);
        ans[vec[i].second] = 0;
      } else {
        p.second = gcd(p.second, vec[i].first);
        ans[vec[i].second] = 1;
      }
    }
    if (p.first == 1 && p.second == 1) {
      cout << "YES" << endl;
      for (int i = 0; i < n; i++) {
        cout << ans[i] + 1 << " \n"[i == n - 1];
      }
      return 0;
    }
  } while ((double)clock() - stt <= 0.1 * CLOCKS_PER_SEC);
  cout << "NO" << endl;
}
