#include <bits/stdc++.h>
using namespace std;
struct T {
  int i, j, r;
} a[100];
char str[100];
int n, m, i;
int v[200][2];
bool rec(int i, int r) {
  if (i >= r) return 1;
  int j, k;
  for (j = i + 1; j <= r; j++) {
    for (k = 0; k < m; k++)
      if (a[k].j >= j && a[k].j <= r && a[k].i >= i + 1 && a[k].i < j)
        break;
      else if (a[k].i == i && (a[k].j >= j) != a[k].r)
        break;
    if (k == m) {
      if (j != i + 1) v[i][0] = i + 1;
      v[i][1] = j;
      if (rec(i + 1, j - 1) && rec(j, r)) return 1;
      v[i][0] = v[i][1] = -1;
      return 0;
    }
  }
  for (k = 0; k < m; k++)
    if (a[k].i == i && a[k].r) break;
  if (k == m) {
    v[i][0] = i + 1;
    if (rec(i + 1, r)) return 1;
    v[i][0] = -1;
  }
  return 0;
}
void print(int i) {
  if (v[i][0] != -1) print(v[i][0]);
  printf("%d ", i + 1);
  if (v[i][1] != -1) print(v[i][1]);
}
int main() {
  memset(v, -1, sizeof(v));
  scanf("%d%d", &n, &m);
  for (i = 0; i < m; i++) {
    scanf("%d%d%s", &a[i].i, &a[i].j, &str);
    a[i].i--;
    a[i].j--;
    if (a[i].i >= a[i].j) {
      puts("IMPOSSIBLE");
      return 0;
    }
    a[i].r = str[0] == 'R';
  }
  if (!rec(0, n - 1)) {
    puts("IMPOSSIBLE");
    return 0;
  }
  print(0);
  puts("");
  return 0;
}
