#include <bits/stdc++.h>
std::pair<int, int> operator-(const std::pair<int, int> &a,
                              const std::pair<int, int> &b) {
  return std::make_pair(a.first - b.first, a.second - b.second);
}
bool left(std::pair<int, int> A, std::pair<int, int> B, std::pair<int, int> C) {
  std::pair<int, int> fs = B - A;
  std::pair<int, int> sc = C - A;
  return 1ll * fs.first * sc.second - 1ll * fs.second * sc.first > 0;
}
std::pair<int, int> pop(std::vector<std::pair<int, int> > &A, int p) {
  std::swap(A.back(), A[p]);
  std::pair<int, int> ret = A.back();
  A.pop_back();
  return ret;
}
std::map<std::pair<int, int>, int> kto;
int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(0);
  int n;
  std::cin >> n;
  std::vector<std::pair<int, int> > A(n);
  for (int i = 0; i < (n); ++i) {
    std::cin >> A[i].first >> A[i].second;
    kto[A[i]] = i + 1;
  }
  std::string str;
  std::cin >> str;
  std::sort(A.begin(), A.end());
  std::vector<std::pair<int, int> > hull;
  hull.push_back(pop(A, 0));
  int best = 0;
  for (int i = (1); i < ((int)(A).size()); ++i)
    if (left(hull.back(), A[best], A[i])) best = i;
  hull.push_back(pop(A, best));
  while ((int)(A).size()) {
    best = 0;
    for (int i = (1); i < ((int)(A).size()); ++i)
      if (left(hull.back(), A[best], A[i])) best = i;
    if (left(hull.back(), A[best], hull[0])) break;
    hull.push_back(pop(A, best));
  }
  int last = 0;
  std::cout << kto[hull[0]] << " ";
  for (int si = 0; si < (n - 2); ++si) {
    if (str[si] == 'L') {
      int nw = (last - 1 + (int)(hull).size()) % (int)(hull).size();
      std::cout << kto[hull[nw]] << " ";
      int nxt = (last + 1) % (int)(hull).size();
      std::vector<std::pair<int, int> > nh;
      nh.push_back(hull[nw]);
      while ((int)(A).size()) {
        best = -1;
        for (int i = 0; i < ((int)(A).size()); ++i)
          if (left(nh.back(), (best == -1 ? hull[nxt] : A[best]), A[i]))
            best = i;
        if (best == -1) break;
        nh.push_back(pop(A, best));
      }
      for (int i = 0; i < ((int)(hull).size() - 2); ++i) {
        nh.push_back(hull[(nxt + i) % (int)(hull).size()]);
      }
      hull = nh;
    } else {
      int nw = (last + 1) % (int)(hull).size();
      std::cout << kto[hull[nw]] << " ";
      std::vector<std::pair<int, int> > nh;
      for (int i = 0; i < ((int)(hull).size() - 1); ++i) {
        nh.push_back(hull[(nw + i) % (int)(hull).size()]);
      }
      while ((int)(A).size()) {
        best = -1;
        for (int i = 0; i < ((int)(A).size()); ++i)
          if (left(nh.back(), (best == -1 ? hull[nw] : A[best]), A[i]))
            best = i;
        if (best == -1) break;
        nh.push_back(pop(A, best));
      }
      hull = nh;
    }
  }
  std::cout << kto[(last == 0 ? hull[1] : hull[0])] << "\n";
  return 0;
}
