#include<bits/stdc++.h>
#define little_dog puts("OvO,2021zjhs005 is better than me.")
#define lcfollower break
#define _2021zjhs005 continue
#define inf 0x3f3f3f3f
#define infi 0x3f3f3f3f3f3f3f3fll
#define up(i,x,y) for(register int i=x;i<=y;++i)
#define dn(i,x,y) for(register int i=x;i>=y;--i)
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return x*f;}
inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10|48);}
inline void writeln(int x){write(x),putchar('\n');}
inline void writesp(int x){write(x),putchar(' ');}
struct lc{
inline void fre(){freopen(".in","r",stdin);freopen(".out","w",stdout);}
inline void ext(){exit(0);}
};namespace LC{
string str[100001],ans;
inline signed main(){
lc follower;
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int n=read();
up(i,1,n)cin>>str[i];
up(i,2,n){
string pre="",nxt="";int chong=0,r=str[i-1].length()-1,l=0;
up(j,1,min(str[i-1].length(),str[i].length())){
pre=str[i-1][r--]+pre,nxt+=str[i][l++];
if(pre==nxt)chong=j;
}str[i-1]+=str[i].substr(chong);str[i]=str[i-1];
}cout<<str[n]<<'\n';
follower.ext();
}
}signed main(){
LC::main();
}