/*
欧拉路径 只要满足奇点 个数 ==0/2就一定存在路径 使每条边都走一遍
看是否连通 -》并查集/在最后判断 是否有取到n+1个点
从奇点 开始dfs倒序加入
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
//#include<queue>
//#include<vector>
//#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------------\n");
using namespace std;
const int maxn=10000+10;
int n,g[maxn][maxn],ans,rd[maxn],jidian,jd_cnt;
char s[maxn],path[maxn];
void dfs(int u)
{
for(int i=1;i<=300;i++)
{
if(g[u][i]>0){
g[u][i]--,g[i][u]--;
//rd[u]--,rd[i]--;
dfs(i);
}
}
path[++ans]=u;
return ;
}
int main()
{
//ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>s;
g[s[0]][s[1]]++;
g[s[1]][s[0]]++;
rd[s[0]]++,rd[s[1]]++;
}
for(int i=1;i<=300;i++){
if(rd[i]%2==1){
jd_cnt++;
if(jidian==0) jidian=i;
}
}
if(jd_cnt&&jd_cnt!=2){ cout<<"No Solution\n"; return 0; }
if(jidian==0){//
for(int i=1;i<=300;i++)
if(rd[i]) { jidian=i; break;}
}
dfs(jidian);
if(ans<n+1) { cout<<"No Solution\n";return 0;}
for(int i=ans;i>=1;i--) cout<<path[i];cout<<'\n';
return 0;
}