#include <bits/stdc++.h>
using namespace std;
const int N=257;
int n,deg[N],head,a[N][N],j,f[N],cnt,ji;
char ans[N*N];
void dfs(int u)
{
for(int i=0;i<N;i++)
{
if(a[u][i])
{
a[u][i]=a[i][u]=0;
dfs(i);
}
}
ans[n--]=u;
}
int find(int x)
{
return (f[x]==x)?x:f[x]=find(f[x]);
}
void merge(int x,int y)
{
x=find(x),y=find(y);
f[y]=x;
}
int main()
{
scanf("%d",&n);
getchar();
for(int i=0;i<N;i++)
f[i]=i;
for(int i=1;i<=n;i++)
{
char u,v;
scanf("%c%c",&u,&v);
getchar();
int x=int(u),y=int(v);
deg[x]++;
deg[y]++;
a[x][y]=1;
a[y][x]=1;
merge(x,y);
}
for(int i=0;i<N;i++)
if(deg[i] && f[i]==i)
cnt++;
if(cnt!=1)
{
printf("No Solution \n");
return 0;
}
for(int i=0;i<N;i++)
if(deg[i]%2)
{
ji++;
if(!head)
head=i;
}
if(!head)
for(int i=0;i<N;i++)
if(deg[i])
{
head=i;
break;
}
if(ji!=0 && ji!=2)
{
printf("No Solution \n");
return 0;
}
dfs(head);
puts(ans);
return 0;
}