#include <bits/stdc++.h>   using namespace std;   struct Edge {     int v;     char c;   } edge[220];   vector<Edge> ans;   vector<int> Chain[10];   int N;   bool flag[110];   void dfs(int x) {     for (int i = 0; i < Chain[x].size(); i++) {       int v = edge[Chain[x][i]].v, id = Chain[x][i] >> 1;       if (!flag[id]) {         flag[id] = 1;         dfs(v);         ans.push_back((Edge){id, edge[Chain[x][i]].c});       }     }   }   void print() {     for (int i = N - 1; i >= 0; i--) printf( %d %c n , ans[i].v + 1, ans[i].c);   }   int main() {     scanf( %d , &N);     for (int i = 0; i < N; i++) {       int a, b;       scanf( %d%d , &a, &b);       edge[2 * i] = (Edge){b,  + };       Chain[a].push_back(2 * i);       edge[2 * i + 1] = (Edge){a,  - };       Chain[b].push_back(2 * i + 1);     }     int u = edge[0].v, sum = 0;     for (int i = 0; i <= 6; i++)       if (1 & Chain[i].size()) u = i, sum++;     if (sum == 0 || sum == 2) {       dfs(u);       if (ans.size() == N)         print();       else         printf( No solution );     } else       printf( No solution );     return 0;   }   