#include <bits/stdc++.h>
using namespace std;
const int maxn = 200100;
int c[maxn], cnt_color;
int n;
void No() {
  puts("No");
  exit(0);
}
void Yes() {
  puts("Yes");
  for (int i = 1; i <= n * 2; i++) printf("%d ", c[i]);
  printf("\n");
  exit(0);
}
char str[maxn];
vector<int> vec[maxn];
int num;
void get_vec() {
  int las = 0;
  for (int i = 0; i <= n * 2; i++) {
    if (str[i] == '1') {
      if (las == 0) {
        num++;
        vec[num].push_back(i);
        vec[num].push_back(i + 1);
      } else
        vec[num].push_back(i + 1);
      las = 1;
    } else
      las = 0;
  }
}
int stk[maxn], top;
void color_all() {
  int las = 0;
  for (int i = 1; i <= n * 2; i++) {
    if (!c[i]) {
      if (!las)
        c[i] = ++cnt_color;
      else
        c[i] = cnt_color;
      las ^= 1;
    }
  }
}
void get_ans() {
  if (top % 4 != 0) No();
  for (int i = 1; i <= top; i += 4) {
    c[stk[i]] = c[stk[i + 2]] = ++cnt_color;
    c[stk[i + 1]] = c[stk[i + 3]] = ++cnt_color;
  }
  color_all();
  Yes();
}
void get_stk() {
  int las;
  for (int i = 1; i <= num; i++) {
    if (i != 1) c[vec[i][0]] = c[las] = ++cnt_color;
    for (int j = 1; j < (int)vec[i].size() - 1; j++) stk[++top] = vec[i][j];
    las = vec[i].back();
  }
  get_ans();
}
void get_pos(int &p1, int &p2) {
  p1 = 0, p2 = 0;
  for (int i = 1; i <= n; i++) {
    if ((int)vec[i].size() > 2) {
      if (p1 == 0)
        p1 = i;
      else if (p2 == 0)
        p2 = i;
      else
        break;
    }
  }
}
void trans() {
  int p1, p2, x;
  get_pos(p1, p2);
  if (p2 == 0) No();
  if (vec[p1].front() == 0 && vec[p2].back() == n * 2 + 1) No();
  x = vec[p2].back();
  vec[p2].pop_back();
  c[vec[p1][1]] = c[vec[p2].back()] = ++cnt_color;
  vec[p2].pop_back();
  for (int j = 2; j < (int)vec[p1].size(); j++) vec[p2].push_back(vec[p1][j]);
  vec[p1].resize(2);
  vec[p1][1] = x;
}
int main() {
  No();
  scanf("%d", &n);
  scanf("%s", str + 1);
  str[0] = '1', str[n * 2] = '1';
  int cnt = 0;
  for (int i = 1; i <= n * 2; i++)
    if (str[i - 1] == '1' && str[i] == '1') cnt++;
  if (cnt & 1) No();
  if (cnt == n * 2) {
    top = n * 2;
    for (int i = 1; i <= n * 2; i++) stk[i] = i;
    get_ans();
    return 0;
  }
  get_vec();
  if (cnt % 4 == 2) trans();
  get_stk();
  return 0;
}
