#include <bits/stdc++.h>
using namespace std;
void solve();
int main() {
  ios_base::sync_with_stdio(false);
  cout << fixed;
  cout.precision(10);
  int t = 1;
  for (int i = 1; i <= t; ++i) {
    solve();
  }
  return 0;
}
int n, m;
vector<int> c[4];
void printerr() {
  cout << "IMPOSSIBLE\n";
  exit(0);
}
map<pair<int, int>, int> res;
bool rec(int l, int r) {
  if (l >= r) {
    return true;
  }
  if (res.find(make_pair(l, r)) != res.end()) {
    return res[make_pair(l, r)];
  }
  if (c[0][l] != -1 && c[1][l] >= r || c[2][l] != -1 && c[3][l] >= r) {
    return res[make_pair(l, r)] = 0;
  }
  if (l + 1 == r) {
    return res[make_pair(l, r)] = 1;
  }
  for (int m = l + 1; m <= r; ++m) {
    if (c[0][l] != -1 && m <= c[1][l] || c[2][l] != -1 && c[2][l] < m) {
      continue;
    }
    bool f = rec(l + 1, m);
    bool f2 = rec(m, r);
    if (f && f2) {
      return res[make_pair(l, r)] = 1;
    }
  }
  return res[make_pair(l, r)] = 0;
}
void print(int l, int r) {
  if (l >= r) {
    return;
  }
  for (int m = l + 1; m <= r; ++m) {
    if (c[0][l] != -1 && m <= c[1][l] || c[2][l] != -1 && c[2][l] < m) {
      continue;
    }
    bool f = rec(l + 1, m);
    bool f2 = rec(m, r);
    if (f && f2) {
      print(l + 1, m);
      cout << l + 1 << " ";
      print(m, r);
      return;
    }
  }
}
void solve() {
  cin >> n >> m;
  for (int i = 0; i < 4; ++i) {
    c[i].assign(n + 1, -1);
  }
  for (int i = 0; i < m; ++i) {
    pair<pair<int, int>, int> tmp;
    string s;
    cin >> tmp.first.first >> tmp.first.second;
    cin >> s;
    if (s[0] == 'L') {
      tmp.second = 0;
    } else {
      tmp.second = 1;
    }
    --tmp.first.first;
    --tmp.first.second;
    if (tmp.first.first >= tmp.first.second) {
      printerr();
    }
    if (c[2 * tmp.second][tmp.first.first] == -1 ||
        c[2 * tmp.second][tmp.first.first] > tmp.first.second) {
      c[2 * tmp.second][tmp.first.first] = tmp.first.second;
    }
    if (c[2 * tmp.second + 1][tmp.first.first] == -1 ||
        c[2 * tmp.second + 1][tmp.first.first] < tmp.first.second) {
      c[2 * tmp.second + 1][tmp.first.first] = tmp.first.second;
    }
  }
  for (int i = 0; i < n; ++i) {
    if (c[0][i] == -1 || c[2][i] == -1) {
      continue;
    }
    if (c[1][i] >= c[2][i]) {
      printerr();
    }
  }
  if (!rec(0, n)) {
    printerr();
  }
  print(0, n);
}
