#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
std::vector<pair<int, int>> ab;
std::vector<int> lr;
int n, c;
int childl[200], childr[200], par[200];
bool go(int curn, int maxn) {
  if (curn >= maxn) {
    return true;
  }
  std::vector<bool> razr(maxn + 1, true);
  for (int i = 0; i < c; i++) {
    int a = ab[i].first;
    int b = ab[i].second;
    if (a < curn) continue;
    if (a > maxn) continue;
    if ((a == curn) && (lr[i] == 1)) {
      for (int j = b; j <= maxn; j++) razr[j] = false;
    } else {
      for (int j = a; j < b; j++) razr[j] = false;
    }
  }
  for (int i = curn; i <= maxn; i++) {
    if (razr[i]) {
      bool b = go(curn + 1, i);
      if (curn + 1 <= i) {
        childl[curn] = curn + 1;
        par[curn + 1] = curn;
      }
      b = b && go(i + 1, maxn);
      if (i + 1 <= maxn) {
        childr[curn] = i + 1;
        par[i + 1] = curn;
      }
      return b;
    }
  }
  return false;
}
int main() {
  int m, k, p, t, q, x, y;
  string s;
  cin >> n >> c;
  for (int i = 0; i < c; i++) {
    cin >> x >> y >> s;
    if (x >= y) {
      cout << "IMPOSSIBLE";
      return 0;
    }
    ab.push_back(make_pair(x, y));
    if (s == "LEFT")
      lr.push_back(-1);
    else
      lr.push_back(1);
  }
  for (int i = 0; i < n; i++) {
    childl[i] = 0;
    childr[i] = 0;
    par[i] = 0;
  }
  if (!go(1, n)) {
    cout << "IMPOSSIBLE";
    return 0;
  }
  std::vector<bool> pr(n + 1, false);
  int cur = 1;
  int num = 0;
  while (num < n) {
    if ((childl[cur] != 0) && (!pr[childl[cur]])) {
      cur = childl[cur];
      continue;
    }
    if (!pr[cur]) {
      cout << cur << " ";
      pr[cur] = true;
      num++;
    }
    if ((childr[cur] != 0) && (!pr[childr[cur]])) {
      cur = childr[cur];
      continue;
    }
    cur = par[cur];
  }
  return 0;
}
