待优化的结果
#include<bits/stdc++.h>
using namespace std;
int n,maxx,m,b[1005],cnt;
string a[1005],ans[1005],d[1005];
void dfs(char z){
if(cnt>maxx){
maxx=cnt;
for(int i=1;i<=maxx;i++)ans[i]=d[i];
}
for(int i=1;i<=n;i++){
if(b[i]==0&&a[i][0]==z){
cnt++;
d[cnt]=a[i];
b[i]=1;
dfs(a[i][a[i].size()-1]);
d[cnt]="";
cnt--;
b[i]=0;
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
cnt=1;
d[cnt]=a[i];
b[i]=1;
dfs(a[i][a[i].size()-1]);
for(int i=1;i<=n;i++)b[i]=0;
}
if(maxx==1||maxx==0||maxx==2)cout<<"***";
else{
for(int i=1;i<maxx;i++)cout<<ans[i]<<'.';
cout<<ans[maxx];
}
return 0;
}