//  #牛客春招刷题训练营# https://www.nowcoder.com/discuss/726480854079250432
#include <iostream>
#include <vector>
using namespace std;
int main() {
  int n;
  string s;
  cin >> n >> s;
  int size = s.size();
  vector<int> a, b(size);
  for (int i = 0; i < size; i++) b[i] = i + 1;
  bool flag = 0;
  flag = (s[0] - '0');//--------n>=1,用于标记当前元素是1还是0,《true》表示1
  int i = 0;
  char last = s[0];
  int num;
  size = 0;
  while(i < n){
    num = 0;
    while(i < n && s[i] == last){
      i++;
      num++;
    }
    a.push_back(num);
    size++;
    if (i < n) last = s[i];
  }
  int index = 0;
  auto shuffle = [&](int ind, size_t lenth){//-----顺时针转一圈使其不能构成排列
    int temp = b[ind];
    for (int j = ind; j < ind + lenth - 1; j++){
      b[j] = b[j + 1];
    }
    b[ind + lenth - 1] = temp;
  };
  for(int j = 0; j < size; j++){
    if (flag){
      void();
    }
    else{
      if (j == size - 1){//-----如果0在最后面则必然不能实现题意
        cout << -1;
        return 0;
      }
      shuffle(index, a[j] + 1);
    }
    index += a[j];
    flag = !flag;
  }
  for (int i = 0; i < b.size(); i++){
    cout << b[i] << " ";
  }
}
// 64 位输出请用 printf("%lld")