#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
string s;
if(!(cin>>n>>s)) return 0;
vector<int> posP, posZ, posM;
for(int i=0;i<n;i++){
if(s[i]=='+') posP.push_back(i);
else if(s[i]=='0') posZ.push_back(i);
else posM.push_back(i);
}
int A=posP.size(), B=posZ.size(), C=posM.size();
if(B==1){ cout<<-1<<"\n"; return 0; }
const int INF = 1000000000;
vector<vector<vector<vector<int>>>> cur(A+1, vector<vector<vector<int>>>(B+1, vector<vector<int>>(C+1)));
vector<int> init(n, INF);
cur[0][0][0] = init;
for(int g=0; g<n; ++g){
vector<vector<vector<vector<int>>>> nxt(A+1, vector<vector<vector<int>>>(B+1, vector<vector<int>>(C+1)));
for(int j=0;j<=A;j++){
for(int t=0;t<=B;t++){
for(int k=0;k<=C;k++){
if(cur[j][t][k].empty()) continue;
vector<int> base = cur[j][t][k];
int used = j + t + k;
int label = g+1;
int parity = (n - used - 1) & 1;
if(parity==0){
if(j < A){
vector<int> nw = base;
nw[posP[j]] = label;
auto &tar = nxt[j+1][t][k];
if(tar.empty() || nw < tar) tar = move(nw);
}
} else {
if(k < C){
vector<int> nw = base;
nw[posM[k]] = label;
auto &tar = nxt[j][t][k+1];
if(tar.empty() || nw < tar) tar = move(nw);
}
}
for(int p=2; p<= B - t; ++p){
vector<int> nw = base;
for(int z=0; z<p; ++z) nw[posZ[t+z]] = label;
auto &tar = nxt[j][t+p][k];
if(tar.empty() || nw < tar) tar = move(nw);
}
}
}
}
cur.swap(nxt);
}
vector<int> best;
if(!cur[A][B][C].empty()) best = cur[A][B][C];
if(best.empty()){ cout<<-1<<"\n"; return 0; }
for(int i=0;i<n;i++){
if(i) cout<<' ';
cout<<best[i];
}
cout<<"\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgaW50IG47CiAgICBzdHJpbmcgczsKICAgIGlmKCEoY2luPj5uPj5zKSkgcmV0dXJuIDA7CiAgICB2ZWN0b3I8aW50PiBwb3NQLCBwb3NaLCBwb3NNOwogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgaWYoc1tpXT09JysnKSBwb3NQLnB1c2hfYmFjayhpKTsKICAgICAgICBlbHNlIGlmKHNbaV09PScwJykgcG9zWi5wdXNoX2JhY2soaSk7CiAgICAgICAgZWxzZSBwb3NNLnB1c2hfYmFjayhpKTsKICAgIH0KICAgIGludCBBPXBvc1Auc2l6ZSgpLCBCPXBvc1ouc2l6ZSgpLCBDPXBvc00uc2l6ZSgpOwogICAgaWYoQj09MSl7IGNvdXQ8PC0xPDwiXG4iOyByZXR1cm4gMDsgfQogICAgY29uc3QgaW50IElORiA9IDEwMDAwMDAwMDA7CiAgICB2ZWN0b3I8dmVjdG9yPHZlY3Rvcjx2ZWN0b3I8aW50Pj4+PiBjdXIoQSsxLCB2ZWN0b3I8dmVjdG9yPHZlY3RvcjxpbnQ+Pj4oQisxLCB2ZWN0b3I8dmVjdG9yPGludD4+KEMrMSkpKTsKICAgIHZlY3RvcjxpbnQ+IGluaXQobiwgSU5GKTsKICAgIGN1clswXVswXVswXSA9IGluaXQ7CiAgICBmb3IoaW50IGc9MDsgZzxuOyArK2cpewogICAgICAgIHZlY3Rvcjx2ZWN0b3I8dmVjdG9yPHZlY3RvcjxpbnQ+Pj4+IG54dChBKzEsIHZlY3Rvcjx2ZWN0b3I8dmVjdG9yPGludD4+PihCKzEsIHZlY3Rvcjx2ZWN0b3I8aW50Pj4oQysxKSkpOwogICAgICAgIGZvcihpbnQgaj0wO2o8PUE7aisrKXsKICAgICAgICAgICAgZm9yKGludCB0PTA7dDw9Qjt0KyspewogICAgICAgICAgICAgICAgZm9yKGludCBrPTA7azw9QztrKyspewogICAgICAgICAgICAgICAgICAgIGlmKGN1cltqXVt0XVtrXS5lbXB0eSgpKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8aW50PiBiYXNlID0gY3VyW2pdW3RdW2tdOwogICAgICAgICAgICAgICAgICAgIGludCB1c2VkID0gaiArIHQgKyBrOwogICAgICAgICAgICAgICAgICAgIGludCBsYWJlbCA9IGcrMTsKICAgICAgICAgICAgICAgICAgICBpbnQgcGFyaXR5ID0gKG4gLSB1c2VkIC0gMSkgJiAxOwogICAgICAgICAgICAgICAgICAgIGlmKHBhcml0eT09MCl7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGogPCBBKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjxpbnQ+IG53ID0gYmFzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG53W3Bvc1Bbal1dID0gbGFiZWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvICZ0YXIgPSBueHRbaisxXVt0XVtrXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRhci5lbXB0eSgpIHx8IG53IDwgdGFyKSB0YXIgPSBtb3ZlKG53KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGsgPCBDKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjxpbnQ+IG53ID0gYmFzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG53W3Bvc01ba11dID0gbGFiZWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvICZ0YXIgPSBueHRbal1bdF1baysxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRhci5lbXB0eSgpIHx8IG53IDwgdGFyKSB0YXIgPSBtb3ZlKG53KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHA9MjsgcDw9IEIgLSB0OyArK3ApewogICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8aW50PiBudyA9IGJhc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgej0wOyB6PHA7ICsreikgbndbcG9zWlt0K3pdXSA9IGxhYmVsOwogICAgICAgICAgICAgICAgICAgICAgICBhdXRvICZ0YXIgPSBueHRbal1bdCtwXVtrXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYodGFyLmVtcHR5KCkgfHwgbncgPCB0YXIpIHRhciA9IG1vdmUobncpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjdXIuc3dhcChueHQpOwogICAgfQogICAgdmVjdG9yPGludD4gYmVzdDsKICAgIGlmKCFjdXJbQV1bQl1bQ10uZW1wdHkoKSkgYmVzdCA9IGN1cltBXVtCXVtDXTsKICAgIGlmKGJlc3QuZW1wdHkoKSl7IGNvdXQ8PC0xPDwiXG4iOyByZXR1cm4gMDsgfQogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgaWYoaSkgY291dDw8JyAnOwogICAgICAgIGNvdXQ8PGJlc3RbaV07CiAgICB9CiAgICBjb3V0PDwiXG4iOwogICAgcmV0dXJuIDA7Cn0K