#include <bits/stdc++.h>
using namespace std;
inline int Int() {
  int x;
  scanf("%d", &x);
  return x;
}
inline long Long() {
  long x;
  scanf("%ld", &x);
  return x;
}
inline long long LLong() {
  long long x;
  scanf("%lld", &x);
  return x;
}
inline float Float() {
  float x;
  scanf("%f", &x);
  return x;
}
inline float Double() {
  double x;
  scanf("%lf", &x);
  return x;
}
inline pair<int, int> Pair() {
  pair<int, int> p;
  scanf("d %d", &p.first, &p.second);
  return p;
}
void S(char *x) { scanf("%s", x); }
void pI(int x) { printf("%d", x); }
void pL(long x) { printf("%ld", x); }
void pLL(long long x) { printf("%lld", x); }
void pUL(unsigned long long x) { printf("%llu", x); }
void pF(float x) { printf("%f", x); }
void pD(double x) { printf("%f", x); }
void pS(char x[]) { printf("%s", x); }
int dx8[] = {0, 0, 1, 1, 1, -1, -1, -1};
int dy8[] = {1, -1, 1, -1, 0, 0, -1, 1};
const double PI = acos(-1.0);
const double EPS = 1e-6;
const int MOD = (int)1e9 + 7;
const int maxn = (int)2e5 + 5;
const int LOGN = 20;
int w[maxn], ans[maxn];
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= (n); i++) cin >> w[i];
  string s;
  cin >> s;
  set<pair<int, int> > intro, extro;
  for (int i = 1; i <= (n); i++) {
    intro.insert(make_pair(w[i], i));
  }
  for (int i = 0; i < (2 * n); i++) {
    if (s[i] == '0') {
      pair<int, int> small = *intro.begin();
      ans[i] = small.second;
      intro.erase(small);
      extro.insert(small);
    } else {
      pair<int, int> big = *extro.rbegin();
      ans[i] = big.second;
      extro.erase(big);
    }
  }
  for (int i = 0; i < (2 * n); i++) cout << ans[i] << " ";
  return 0;
}
