1 #include<iostream>
2 #include<string>
3 #include<cstring>
4 #include<algorithm>
5 using namespace std;
6
7 bool edge[127][127];
8 int n;
9 int h;
10 string ans;
11 int d[127];
12
13 void dfs(int node)
14 {
15 for (int i = 'A'; i <= 'z'; i++)
16 {
17 if (edge[node][i])
18 {
19 edge[node][i] = edge[i][node] = false;
20 dfs(i);
21 if (i == 'Z') i = 'a' - 1;
22 }
23 }
24 ans.push_back(node);
25 }
26
27 int main()
28 {
29 cin >> n;
30 string t;
31 for (int i = 0; i < n; i++)
32 {
33 cin >> t;
34 edge[t[0]][t[1]] = true;
35 edge[t[1]][t[0]] = true;
36 d[t[0]]++;
37 d[t[1]]++;
38 }
39 int cnt = 0;
40 for (int i = 'A'; i <= 'z'; i++)
41 {
42 if (d[i] % 2)
43 {
44 if(!h) h = i;
45 cnt++;
46 }
47 if (i == 'Z') i = 'a' - 1;
48 //cout << cnt << " ";
49 }
50 if (cnt && cnt != 2)
51 {
52 cout << "No Solution";
53 return 0;
54 }
55 if(!h)
56 for (int i = 'A'; i <= 'z'; i++)
57 {
58 if (d[i])
59 {
60 h = i;
61 break;
62 }
63 if (i == 'Z') i = 'a' - 1;
64 }
65 dfs(h);
66 //cout << ans.length();
67 for (int i = ans.length() - 1; i >= 0; i--)
68 {
69 cout << ans[i];
70 }
71 }