#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    string s;
    cin >> n >> s;
    // p是一个排列,那么p的内容就是1~n的乱序
    // s[n-1] 必须是1,否者p就不满足【排列】定义
    // 如果[i,j]是连续的1,那么p[k] = k+1, 其中k=i+1~j)
    // 如果是s[i] = 1, 那么0~i项为1~i+1的乱序
    // 如果前i项s都是0,那么s[i] 不能为i+1
    // 最终选择:如果s[i] = 1,那么从i+1到上一个s[k]=1的位置倒叙填充
    // s[0]如果为1,则填充1
    if(s[n-1] != '1') {
        cout << -1 << endl;
        return 0;
    }
    vector<int> a(n);
    int last = n;
    for(auto i = n - 1; i >= 0; i--) {
        if(s[i] == '1') {
            if(last < n) {
                int m = last+1;
                for(auto j = i+1; j <= last; j++) {
                    a[j] = m;
                    m--;
                }
            }
            last = i;
        }
    }
    if(s[0] == 1) {
        a[0] = 1;
    } else {
        int m = last+1;
        for(auto j = 0; j <= last; j++) {
            a[j] = m;
            m--;
        }
    }
    auto first = true;
    for(auto v : a) {
        if(!first) {
            cout << " ";
        }
        first = false;
        cout << v;
    }
    cout << endl;
}
// 64 位输出请用 printf("%lld")