#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
const int maxn=300;
struct TreeNode{
char val;
struct TreeNode* l;
struct TreeNode* r;
};
int n;
struct TreeNode* idx[maxn]={NULL
};
void preordertraverse(struct TreeNode* index){
if(index){
printf("%c",index->val);
preordertraverse(index->l);
preordertraverse(index->r);
}
}
int father[300];
int is_in_tree[300];
int main(){
scanf("%d",&n);
for(int i=0;i<=300;i++){
idx[i]=(struct TreeNode*)malloc(sizeof(struct TreeNode));
idx[i]->val=i+96;
idx[i]->l=NULL;
idx[i]->r=NULL;
}
while(n--){
char x[3];
scanf("%s",x);
x[0]=x[0]-'a'+1;
is_in_tree[x[0]]=1;
if(x[1]>='a'&&x[1]<='z'){
idx[x[0]]->l=idx[x[1]-'a'+1];
father[x[1]-'a'+1]=1;
is_in_tree[x[1]-'a'+1]=1;
}
if(x[2]>='a'&&x[2]<='z'){
idx[x[0]]->r=idx[x[2]-'a'+1];
father[x[2]-'a'+1]=1;
is_in_tree[x[2]-'a'+1]=1;
}
}
int root;
for(int i=1;i<=26;i++){
if(father[i]==0&&is_in_tree[i]==1){
root=i;
break;
}
}
preordertraverse(idx[root]);
return 0;
}