#include <bits/stdc++.h>
using namespace std;
struct data {
  int val, pos;
};
data a[400010];
bool comp(data a1, data b1) {
  if (a1.val > b1.val) {
    return false;
  }
  return true;
}
int arr[400010];
char ch[400010];
vector<int> vec(400010);
int main() {
  int i, j, k, n, m, t, p, cas = 1;
  memset(arr, 0, sizeof arr);
  while (!vec.empty()) vec.clear();
  int cnt = 0, l = 0, r = 0;
  stack<int> st;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &a[i].val);
    a[i].pos = i + 1;
  }
  getchar();
  scanf("%s", ch);
  sort(a, a + n, comp);
  for (i = 0; i < 2 * n; i++) {
    if (ch[i] == '0') {
      cnt++;
      st.push(cnt - 1);
      vec.push_back(a[cnt - 1].pos);
    } else {
      int n1 = st.top();
      st.pop();
      vec.push_back(a[n1].pos);
    }
  }
  for (i = 0; i < vec.size(); i++) {
    if (i == 0)
      printf("%d", vec[i]);
    else
      printf(" %d", vec[i]);
  }
  printf("\n");
  return 0;
}
