#include <bits/stdc++.h>
using namespace std;
int n, top = 0, head = 0, tail = 0, cnt = 0;
int in[300008], out[300008], door[300008], one[300008], two[300008], q[300008],
    qin[300008], vis[300008];
char s[300008];
int main() {
  scanf("%d", &n);
  scanf("%s", s);
  out[1] = in[n * 2] = 1;
  for (int i = 0; i < n * 2 - 1; i++) {
    if (s[i] == '1') in[i + 1] = out[i + 2] = 1;
  }
  for (int i = 1; i <= 2 * n; i++) {
    if (in[i] == 1 && out[i] == 1)
      q[++top] = i;
    else if (in[i] == 1)
      qin[++tail] = i;
  }
  if (top % 2 == 1) {
    printf("No\n");
    return 0;
  }
  for (int i = 1; i < top; i++) {
    if (door[q[i]] != 0) continue;
    int temp = 1;
    if (door[q[i + 1]] != 0 || q[i + 1] == q[i] + 1) temp = 2;
    if (i + temp > top) break;
    door[q[i]] = door[q[i + temp]] = ++cnt;
    one[cnt] = q[i], two[cnt] = q[i + temp];
  }
  if (door[q[top]] == 0) {
    printf("No\n");
    return 0;
  }
  int now = 1;
  while (now != 2 * n + 1) {
    if (vis[now]) break;
    vis[now] = 1;
    if (door[now] != 0) {
      if (now == one[door[now]])
        now = two[door[now]];
      else
        now = one[door[now]];
      now += 1;
    } else {
      door[now] = ++cnt;
      int temp = qin[++head];
      door[temp] = cnt;
      now = temp + 1;
    }
  }
  if (head != tail)
    printf("No\n");
  else {
    printf("Yes\n");
    int temp = 2;
    for (int i = 1; i <= 2 * n; i++) {
      if (door[i] == 0) {
        if (temp == 2)
          temp = 1, door[i] = ++cnt;
        else
          temp = 2, door[i] = cnt;
      }
      printf("%d%c", door[i], i == 2 * n ? '\n' : ' ');
    }
  }
  return 0;
}
