#include <bits/stdc++.h>
using namespace std;
int main() {
  int N;
  cin >> N;
  string s;
  cin >> s;
  int walls[2 * N];
  int jumps[2 * N];
  int check[2 * N];
  for (int i = 0; i < 2 * N; i++) {
    walls[i] = N + 1;
    check[i] = 0;
    jumps[i] = -1;
  }
  vector<int> both, left, right;
  if (s[0] == '1') {
    check[0] = 2;
    both.push_back(0);
  } else {
    check[0] = 1;
    right.push_back(0);
  }
  if (s[2 * N - 2] == '1') {
    check[2 * N - 1] = 2;
    both.push_back(2 * N - 1);
  } else {
    check[2 * N - 1] = -1;
    left.push_back(2 * N - 1);
  }
  int ct = 0;
  if (check[0] == 1) ct++;
  if (check[2 * N - 1] == -1) ct++;
  int first = -1;
  for (int i = 1; i < 2 * N - 1; i++) {
    if (s[i - 1] == '1' && s[i] == '1') {
      check[i] = 2;
      both.push_back(i);
    } else if (s[i - 1] == '1' && s[i] == '0') {
      check[i] = 1;
      if (check[i - 1] == 2) {
        first = i;
        ct++;
      }
      right.push_back(i);
    } else if (s[i - 1] == '0' && s[i] == '1') {
      check[i] = -1;
      left.push_back(i);
    }
  }
  int c = both.size();
  if (c % 2 != 0)
    cout << "No" << endl;
  else {
    if (c == 2 * N && N % 2 != 0)
      cout << "No" << endl;
    else if (c == 2 * N) {
      cout << "Yes" << endl;
      for (int i = 0; i < 2 * N; i++) cout << (i % N) + 1 << " ";
      cout << endl;
    } else if ((c / 2 + ct) % 2 != 0)
      cout << "No" << c / 2 + ct << endl;
    else {
      sort(both.begin(), both.end());
      int current = 1;
      if (c % 4 != 0) {
        walls[both[0]] = 1;
        walls[first - 1] = 1;
        jumps[0] = first - 1;
        jumps[first - 1] = 0;
        current++;
        for (int i = 0; i < c; i++) {
          if (both[i] == first - 1) {
            both.erase(both.begin() + i);
            break;
          }
        }
        both.erase(both.begin());
      }
      c = both.size();
      for (int i = 0; i < c / 2; i++) {
        walls[both[i]] = current;
        walls[both[i + c / 2]] = current;
        jumps[both[i]] = both[i + c / 2];
        jumps[both[i + c / 2]] = both[i];
        current++;
      }
      int last = 2 * N - 1;
      while (check[last] == 2) {
        last = jumps[last];
        last--;
      }
      int start = 0;
      int index = 0;
      int d = left.size();
      while (index < d) {
        while (check[start] == 2) {
          start = jumps[start];
          start++;
        }
        if (left[index] == last) index++;
        if (index < d) {
          walls[start] = current;
          walls[left[index]] = current;
          start = left[index] + 1;
          index++;
          current++;
        }
      }
      while (check[start] == 2) {
        start = jumps[start];
        start++;
      }
      walls[start] = current;
      walls[last] = current;
      current++;
      current *= 2;
      for (int i = 0; i < 2 * N; i++) {
        if (walls[i] == N + 1) {
          walls[i] = current / 2;
          current++;
        }
      }
      cout << "Yes" << endl;
      for (int i = 0; i < 2 * N; i++) cout << walls[i] << " ";
      cout << endl;
    }
  }
  return 0;
}
