#include <bits/stdc++.h>   using namespace std;   const int maxn = 7, n = 7, maxm = 101;   int m, cntblk = maxn, f[maxn], deg[maxn];   bool used[maxm];   class ed {    public:     int target, id;     char type;     ed(int t, int i, char ty) : target(t), id(i), type(ty){};   };   class ans {    public:     int id;     char type;     ans(int i, char ty) : id(i), type(ty){};   };   vector<ed> edge[maxn];   vector<ans> answer;   inline int getf(int x) { return f[x] == x ? x : f[x] = getf(f[x]); }   void euler(int x, int in_id, char in_type) {     for (vector<ed>::iterator vi = edge[x].begin(); vi != edge[x].end(); vi++) {       if (used[(*vi).id]) continue;       used[(*vi).id] = true;       euler((*vi).target, (*vi).id, (*vi).type);     }     if (in_id >= 0) answer.push_back(ans(in_id, in_type));   }   int main() {     cin >> m;     for (int i = 0; i < n; i++) f[i] = i, deg[i] = 0;     for (int i = 1, x, y; i <= m; i++) {       cin >> x >> y;       deg[x]++;       deg[y]++;       edge[x].push_back(ed(y, i,  + ));       edge[y].push_back(ed(x, i,  - ));       if (getf(x) == getf(y)) continue;       f[getf(x)] = getf(y);       cntblk--;     }     int tmp = 0, s = -1;     for (int i = 0; i < n; i++) {       cntblk -= (deg[i] == 0);       tmp += (deg[i] & 1);       if (deg[i] > 0 && (s == -1 || deg[i] & 1)) s = i;     }     if (cntblk != 1 || !(tmp == 0 || tmp == 2)) {       puts( No solution );       return 0;     }     memset(used, false, sizeof(used));     euler(s, -1,  + );     for (vector<ans>::reverse_iterator vi = answer.rbegin(); vi < answer.rend();          vi++) {       printf( %d %c n , (*vi).id, (*vi).type);     }     return 0;   }   