#include <bits/stdc++.h>
using namespace std;
char s[200010];
int a[200010], st[200010], ed[200010], ans[200010], M, lb;
vector<int> in[200010];
int p[200010], N;
int main() {
  int n, i, j, sum, tmp;
  bool flag;
  scanf("%d%s", &n, s + 1);
  a[0] = 1;
  for (i = 1; s[i]; i++) a[i] = s[i] - '0';
  n <<= 1;
  for (i = 0; i < n; i++) {
    if (!a[i] && a[(i + 1) % n]) {
      M++;
      st[M] = i;
      for (j = (i + 1) % n; a[j]; j = (j + 1) % n) {
        if (a[(j + 1) % n]) in[M].push_back(j);
      }
      ed[M] = (j - 1 + n) % n;
    }
  }
  if (!M) {
    n >>= 1;
    if (n & 1) {
      puts("No");
      return 0;
    }
    puts("Yes");
    for (i = 1; i <= n; i += 2) printf("%d %d %d %d ", i, i + 1, i, i + 1);
  }
  sum = 0;
  for (i = 1; i <= M; i++) sum += in[i].size();
  if (sum & 1) {
    puts("No");
    return 0;
  }
  if (sum & 2) {
    tmp = 0;
    for (i = 1; i <= M; i++) tmp += !in[i].empty();
    if (tmp == 1) {
      puts("No");
      return 0;
    }
    for (i = 1; in[i].empty(); i++)
      ;
    for (j = i + 1; in[j].empty(); j++)
      ;
    swap(ed[i], ed[j]);
    ans[*in[i].rbegin()] = ans[*in[j].rbegin()] = ++lb;
    in[i].pop_back();
    in[j].pop_back();
  }
  for (i = 1; i < M; i++) ans[ed[i]] = ans[st[i + 1]] = ++lb;
  ans[ed[M]] = ans[st[1]] = ++lb;
  for (i = 1; i <= M; i++) {
    for (int x : in[i]) p[++N] = x;
  }
  for (i = 1; i <= N; i += 4) {
    ans[p[i]] = ans[p[i + 2]] = ++lb;
    ans[p[i + 1]] = ans[p[i + 3]] = ++lb;
  }
  flag = 0;
  for (i = 0; i < n; i++) {
    if (!ans[i]) {
      flag = !flag;
      if (flag) lb++;
      ans[i] = lb;
    }
  }
  puts("Yes");
  for (i = 0; i < n; i++) printf("%d ", ans[i]);
}
