#include <bits/stdc++.h>
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
long long int myRand(long long int B) { return (unsigned long long)rng() % B; }
int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  vector<long long int> x(n), y(n);
  for (int i = 0; i < n; i++) {
    cin >> x[i] >> y[i];
  }
  string str;
  cin >> str;
  int s = 0;
  for (int i = 0; i < n; i++) {
    if (x[i] > x[s]) s = i;
  }
  auto check = [&](int i, int j, int k) -> bool {
    long long int xx = x[j] - x[i], yy = y[j] - y[i];
    long long int xxx = x[k] - x[i], yyy = y[k] - y[i];
    long long int cross = xx * yyy - yy * xxx;
    if (cross > 0)
      return false;
    else
      return true;
  };
  vector<int> res = {s};
  vector<int> used(n);
  for (int i = 0; i < n; i++) {
    used[i] = false;
  }
  used[s] = true;
  for (int i = 0; i < str.size(); i++) {
    int k;
    for (int j = 0; j < n; j++)
      if (!used[j]) {
        k = j;
        break;
      }
    if (str[i] == 'L') {
      for (int j = 0; j < n; j++) {
        if (used[j]) continue;
        if (check(res.back(), k, j)) k = j;
      }
      res.push_back(k);
      used[k] = true;
    } else {
      for (int j = 0; j < n; j++) {
        if (used[j]) continue;
        if (!check(res.back(), k, j)) k = j;
      }
      res.push_back(k);
      used[k] = true;
    }
  }
  for (int i = 0; i < n; i++) {
    if (!used[i]) res.push_back(i);
  }
  for (int i = 0; i < n; i++) {
    printf("%d ", res[i] + 1);
  }
  printf("\n");
}
