func_code_string: #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;   }   