#include <bits/stdc++.h>
using namespace std;
template <typename C>
void MA(C& a, C b) {
  if (a < b) a = b;
}
template <typename C>
void MI(C& a, C b) {
  if (a > b) a = b;
}
int n, c;
void nie() {
  puts("IMPOSSIBLE");
  exit(0);
}
vector<int> l[1000001], r[1000001];
vector<int> wyn;
int dfs(int i, int cn) {
  if (i == cn) return cn - 1;
  if (l[i].size() == 0) {
    wyn.push_back(i);
    for (int j = 0; j < r[i].size(); j++) MA(cn, r[i][j] + 1);
    return dfs(i + 1, cn);
  } else {
    int ma = l[i][0];
    for (int j = 0; j < l[i].size(); j++) MA(ma, l[i][j]);
    int pom = dfs(i + 1, ma + 1);
    wyn.push_back(i);
    for (int j = 0; j < r[i].size(); j++)
      if (r[i][j] <= pom) nie();
    ma = max(cn, pom + 1);
    for (int j = 0; j < r[i].size(); j++) MA(ma, r[i][j] + 1);
    return dfs(pom + 1, ma);
  }
}
int main() {
  scanf("%d%d", &n, &c);
  for (int i = 0; i < c; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    a--;
    b--;
    if (b <= a) nie();
    char z[6];
    scanf("%s", z);
    if (z[0] == 'L') {
      l[a].push_back(b);
    } else {
      r[a].push_back(b);
    }
  }
  dfs(0, n);
  for (int i = 0; i < n; i++) printf("%d ", wyn[i] + 1);
  puts("");
}
