#include <bits/stdc++.h>
using namespace std;
int N, C;
vector<int> E[1010000][2];
stringstream S;
int dfs(int L, int R, int MR) {
  if (L > R) return R;
  sort(E[L][0].begin(), E[L][0].end());
  sort(E[L][1].begin(), E[L][1].end());
  int LMa = E[L][0].empty() ? -1 : E[L][0].back();
  int RMi = E[L][1].empty() ? MR + 1 : E[L][1][0];
  int RMa = E[L][1].empty() ? -1 : E[L][1].back();
  if (LMa > MR || RMa > MR) (void)printf("IMPOSSIBLE\n"), exit(0);
  int ret = max(L, dfs(L + 1, LMa, MR));
  if (ret >= RMi) (void)printf("IMPOSSIBLE\n"), exit(0);
  S << L + 1 << " ";
  return max(ret, dfs(ret + 1, max(R, RMa), MR));
}
void solve() {
  int i, j, k, l, r, x, y;
  string s;
  cin >> N >> C;
  for (i = 0; i < C; i++) {
    cin >> x >> y >> s;
    if (x >= y) return (void)printf("IMPOSSIBLE\n");
    E[x - 1][s[0] == 'R'].push_back(y - 1);
  }
  dfs(0, N - 1, N - 1);
  cout << S.str() << endl;
}
int main(int argc, char** argv) {
  string s;
  int i;
  if (argc == 1) ios::sync_with_stdio(false);
  for (i = 0; i < argc - 1; i++) s += argv[i + 1], s += '\n';
  for (i = 0; i < s.size(); i++) ungetc(s[s.size() - 1 - i], stdin);
  solve();
  return 0;
}
