#include <bits/stdc++.h>
#define N 10100
#define rint register int
using namespace std;
int n;
string a[N];
map<char,int>s1,s2;
char s,t;
string start;
bool b[N];
int sum;
string ans[N];
inline void dfs(string s,int step)
{
// cout<<s<<endl;
if(step == n)
{
for(rint i=1;i<n;++i) cout<<ans[i]<<".";
cout<<ans[n];
exit(0);
}
for(rint i=1;i<=n;++i)
{
if(!b[i] && s[s.size() - 1] == a[i][0])
{
b[i] = 1;
ans[step + 1] = a[i];
dfs(a[i],step + 1);
// --sum;
b[i] = 0;
}
}
}
int main()
{
scanf("%d",&n);
for(rint i=1;i<=n;++i)
{
cin>>a[i];
++s1[a[i][0]],++s2[a[i][a[i].size() - 1]];
}
sort(a + 1,a + n + 1);
int cnt[2] = {0,0};
for(char i='a';i<='z';++i)
{
if(s1[i] != s2[i])
{
if(s1[i] - s2[i] == 1) s = i;
else if(s2[i] - s1[i] == 1) t = i;
}
}
for(rint i=1;i<=n;++i)
{
if(a[i][0] == s && (a[i][a[i].size() - 1] != t || s2[t] != 1))
{
b[i] = 1;
ans[++sum] = a[i];
break;
}
}
// cout<<start;
dfs(ans[sum],1);
printf("***");
return 0;
}