#include <bits/stdc++.h>
using namespace std;
const int maxN = 2e5 + 7;
template <class T>
T rd() {
  bool f = 1;
  char c = getchar();
  for (; !isdigit(c); c = getchar())
    if (c == '-') f = 0;
  T x = 0;
  for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';
  return f ? x : -x;
}
void NIE() {
  puts("No");
  exit(0);
}
int n;
char a[maxN];
list<int> seg[maxN];
int tt;
int col[maxN], tc;
void debug(list<int> l) {
  for (int x : l) cerr << x << " ";
  cerr << endl;
}
void debug(int x) { debug(seg[x]); }
int main() {
  n = rd<int>() << 1;
  scanf("%s", a + 1);
  a[0] = a[n] = '1';
  seg[tt = 1].push_back(0);
  for (int i = (1), _ = (n + 1); i <= _; ++i) {
    if (a[i - 1] == '1')
      seg[tt].push_back(i);
    else if (a[i - 1] == '0' && a[i] == '1')
      seg[++tt].push_back(i);
  }
  seg[tt].pop_back();
  seg[1].pop_front();
  if (1 != tt) seg[tt].splice(seg[tt].end(), seg[1]);
  if (seg[tt].empty()) --tt;
  int sum = 0, x = 0, y = 0;
  for (int i = (2), _ = (tt); i <= _; ++i) {
    sum += seg[i].size() - 2;
    if (seg[i].size() > 2) {
      if (!x)
        x = i;
      else
        y = i;
    }
  }
  if (sum & 1) NIE();
  if (sum % 4 == 2) {
    if (!y) NIE();
    int a = seg[x].back();
    seg[x].pop_back();
    int b = seg[y].back();
    seg[y].pop_back();
    int u = seg[x].back();
    seg[x].pop_back();
    int v = seg[y].back();
    seg[y].pop_back();
    col[u] = col[v] = ++tc;
    seg[x].push_back(b);
    seg[y].push_back(a);
    sum -= 2;
  }
  for (int i = (2), _ = (tt); i < _; ++i) {
    int u = seg[2].back();
    seg[2].pop_back();
    int v = seg[i + 1].front();
    seg[i + 1].pop_front();
    col[u] = col[v] = ++tc;
    seg[2].splice(seg[2].end(), seg[i + 1]);
  }
  int u = seg[2].back();
  seg[2].pop_back();
  int v = seg[2].front();
  seg[2].pop_front();
  col[u] = col[v] = ++tc;
  assert(seg[2].size() % 4 == 0);
  {
    vector<int> v;
    for (int x : seg[2]) v.push_back(x);
    for (int i = (0), _ = (v.size() / 2); i < _; ++i)
      col[v[i]] = col[v[i + v.size() / 2]] = ++tc;
    int tp = 1;
    for (int i = 1; i <= n; ++i)
      if (!col[i]) {
        col[i] = tp ? ++tc : tc;
        tp ^= 1;
      }
    assert(tp == 1);
  }
  puts("Yes");
  for (int i = (1), _ = (n); i <= _; ++i) printf("%d%c", col[i], " \n"[i == n]);
  return 0;
}
