#include #include #include using std::cin; using std::cout; const char endl = '\n'; const int N = 1005; int n, cnt, s, t, deg[N], ans[N]; int g[N][N]; std::set nodes; void dfs(char u) { for (int i = 1; i <= 128; i++) { if (g[u][i]) { g[u][i]--; g[i][u]--; dfs(i); } } ans[++cnt] = u; } int main() { std::ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n; for (int i = 1; i <= n; i++) { char u, v; cin >> u >> v; g[u][v]++, g[v][u]++; deg[u]++, deg[v]++; nodes.insert(u); nodes.insert(v); } int x = 0; t = *nodes.rbegin(); for (const char &node : nodes) { if (deg[node] & 1) { x++; if (!s) s = node; } } if (!s) s = *nodes.begin(); if (x && x != 2) { cout << "No Solution" << endl; exit(0); } dfs(s); if (cnt <= n) { cout << "No Solution" << endl; } else { for (int i = cnt; i; i--) { cout << (char)(ans[i]); } cout << endl; } return 0; }