#include <bits/stdc++.h>
namespace io {
template <typename T>
inline void read(T& a) {
  int c = getchar(), sign = 0;
  a = 0;
  while (c < '0' || c > '9') sign += (c == '-'), c = getchar();
  while (c >= '0' && c <= '9') a = (a << 1) + (a << 3) + c - 48, c = getchar();
  if (sign & 1) a = -a;
}
template <typename T, typename... _T>
inline void read(T& a, _T&... argc) {
  read(a);
  read(argc...);
}
template <typename T>
inline void Write(T a) {
  if (a > 9) Write(a / 10);
  putchar(a % 10 + '0');
}
template <typename T>
inline void write(T a, char ch = ' ') {
  if (a < 0) putchar('-'), a = -a;
  Write(a);
  putchar(ch);
}
}  // namespace io
using namespace io;
using namespace std;
const int maxn = 2e3;
const int mod = 1e9 + 7;
int n, d, m, a[maxn + 3], b[maxn + 3];
int dem[maxn + 3], id[maxn + 3];
int k, h;
int res = 2e9;
long long dp[maxn + 5], t[maxn + 3];
string second;
bool kt[maxn + 3];
map<int, int> maps;
vector<int> edge[maxn + 3];
map<int, int>::iterator it;
template <typename T>
void answer(T x) {
  cout << x;
  exit(0);
}
void putstring(string x, char ch = ' ') {
  for (char c : x) putchar(c);
  putchar(ch);
}
struct T {
  long long x, y;
  T operator-(const T& other) const { return {x - other.x, y - other.y}; }
  long long operator*(const T& other) const {
    return x * other.y - y * other.x;
  }
  int direct_vector(const T& a, const T& b) const {
    long long ans = (a - *this) * (b - *this);
    return ans > 0;
  }
} v[maxn + 3];
int main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL);
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> v[i].x >> v[i].y;
  cin >> second;
  int chot = min_element(v + 1, v + n + 1,
                         [](const T& a, const T& b) {
                           return a.x != b.x ? a.x < b.x : a.y < b.y;
                         }) -
             v;
  kt[chot] = true;
  write(chot);
  for (int i = 0; i < second.size(); i++) {
    int cc = -1, p = (second[i] == 'L');
    for (int j = 1; j <= n; ++j) {
      if (kt[j]) continue;
      if (cc == -1) {
        cc = j;
        continue;
      }
      if (p == v[chot].direct_vector(v[j], v[cc])) {
        cc = j;
      }
    }
    kt[cc] = true;
    chot = cc;
    write(chot);
  }
  for (int i = 1; i <= n; ++i)
    if (!kt[i]) write(i);
}
