#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const double eps = 1e-9;
const int INF = inf;
const double EPS = eps;
struct __timestamper {};
class fenv_tree {
  static int f(int x) { return x & -x; }
  vector<int> tr;

 public:
  fenv_tree(int n) : tr(n + 1, -inf) {}
  void relax(int x, int v) {
    for (x++; x < ((int)(tr).size()); x += f(x)) tr[x] = max(tr[x], v);
  }
  int get(int x) {
    int res = -inf;
    for (x++; x > 0; x -= f(x)) res = max(res, tr[x]);
    return res;
  }
};
vector<vector<pair<int, int>>> rests;
int n;
vector<int> rig, spl;
vector<int> ans;
void restore(int v) {
  if (v + 1 < spl[v]) {
    rig[v + 1] = spl[v] - 1;
    restore(v + 1);
  }
  ans.push_back(v);
  if (spl[v] <= rig[v]) {
    rig[spl[v]] = rig[v];
    restore(spl[v]);
  }
}
bool check() {
  rig = vector<int>(n);
  for (int i = 0; i < (n); i++) rig[i] = i;
  spl = vector<int>(n);
  fenv_tree tr(n);
  for (int i = 0; i < (n); i++) tr.relax(i, rig[i]);
  for (int i = n - 1; i >= 0; i--) {
    for (pair<int, int> r : rests[i]) {
      if (r.first <= i) return false;
      rig[i] = max(rig[i], rig[r.first]);
    }
    rig[i] = tr.get(rig[i]);
    tr.relax(i, rig[i]);
    vector<pair<int, int>> seq;
    for (int i2 = i + 1; i2 <= rig[i];) {
      seq.push_back(make_pair(i2, rig[i2]));
      i2 = rig[i2] + 1;
    }
    int b1 = 0, b2 = ((int)(seq).size());
    for (pair<int, int> r : rests[i]) {
      int id = upper_bound(seq.begin(), seq.end(), make_pair(r.first, inf)) -
               seq.begin() - 1;
      if (r.second == 0) {
        b1 = max(b1, id + 1);
      } else {
        b2 = min(b2, id);
      }
    }
    if (b1 > b2) return false;
    if (seq.empty()) {
      spl[i] = i + 1;
    } else {
      spl[i] = b1 == ((int)(seq).size()) ? rig[i] + 1 : seq[b1].first;
    }
  }
  ans.clear();
  rig[0] = n - 1;
  restore(0);
  for (int i = 0; i < (n); i++) printf("%d%c", ans[i] + 1, "\n "[i + 1 < n]);
  return true;
}
int main() {
  int m;
  while (scanf("%d%d", &n, &m) == 2) {
    rests = vector<vector<pair<int, int>>>(n);
    for (int i = 0; i < (m); i++) {
      int a, b;
      char ty[10];
      scanf("%d%d%s", &a, &b, ty), a--, b--;
      rests[a].push_back(make_pair(b, !strcmp(ty, "LEFT") ? 0 : 1));
    }
    if (!check()) {
      printf("IMPOSSIBLE\n");
    }
  }
  return 0;
}
