#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<long long> w(n);
for (int i = 0; i < n; i++) cin >> w[i];
string s;
cin >> s;
// 空排(两座全空)按宽度升序取;半满排(已有一人)按宽度降序取
vector<int> used(n, 0);
using P = pair<long long, int>;
priority_queue<P, vector<P>, greater<P>> emptyQ;
priority_queue<P> halfQ;
for (int i = 0; i < n; i++) emptyQ.push({w[i], i});
vector<int> pick;
for (char c : s) {
int row;
if (c == '0') {
// 内向者:挑宽度最小的空排
while (!emptyQ.empty() && used[emptyQ.top().second] != 0) emptyQ.pop();
row = emptyQ.top().second;
emptyQ.pop();
used[row] = 1;
halfQ.push({w[row], row});
} else {
// 外向者:挑宽度最大的半满排
while (!halfQ.empty() && used[halfQ.top().second] != 1) halfQ.pop();
row = halfQ.top().second;
halfQ.pop();
used[row] = 2;
}
pick.push_back(row + 1);
}
for (int i = 0; i < (int)pick.size(); i++) {
if (i) cout << ' ';
cout << pick[i];
}
cout << '\n';
return 0;
}