// ROOT : DRAGON3012009 : WA in Real Life
#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll short
#define el "\n"
#define fi first
#define se second
#pragma GCC optimize("Ofast")
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 505
#define Bit(i) (1LL << i )
#define INF (1ll<<30)
#define NAME "file"
#define debug(a) cout << #a << " = " << a << endl;
using namespace std;
ll n, m , q , tmp ;
string ans ;
string a[MAXN] ;
string cp[MAXN ] ;
ll lenlienquan(string x, string y) {
ll len1 = x.size();
ll len2 = y.size();
for(ll len = min(len1, len2); len > 0; len--) {
if(x.substr(len1 - len) == y.substr(0, len)) {
return len;
}
}
return 0;
}
void init() {
cin >> n ;
FOR(i , 1 , n ) cin >> a[i] ;
tmp = n ;
}
void solve() {
n = tmp ;
random_shuffle(a + 1 , a + n + 1 ) ;
FOR(i , 1 , n ) cp[i] = a[i] ;
vector<string> valid;
FOR(i, 1, n) {
bool sub = false;
FOR(j, 1, n) {
if(i == j) continue;
if(cp[j].find(cp[i]) != string::npos) {
if (cp[j].size() > cp[i].size() || (cp[j].size() == cp[i].size() && i > j)) {
sub = true;
break;
}
}
}
if(!sub) valid.push_back(cp[i]);
}
n = valid.size();
FOR(i, 1, n) cp[i] = valid[i - 1];
vector<bool> dead(n + 1, false);
ll rem = n;
while(rem > 1) {
ll max_ol = -1;
ll best_u = -1, best_v = -1;
FOR(i, 1, n) {
if(dead[i]) continue;
FOR(j, 1, n) {
if(dead[j] || i == j) continue;
ll tmp = lenlienquan(cp[i], cp[j]);
if(tmp >= max_ol) {
if(tmp == max_ol ) {
if(rand() % 2 == 0 ) continue ;
}
max_ol = tmp;
best_u = i;
best_v = j;
}
}
}
cp[best_u] = cp[best_u] + cp[best_v].substr(max_ol);
dead[best_v] = true;
rem--;
FOR(i, 1, n) {
if(dead[i] || i == best_u) continue;
if(cp[best_u].find(cp[i]) != string::npos) {
dead[i] = true;
rem--;
}
}
}
string res ;
FOR(i, 1, n) {
if(!dead[i]) {
res = cp[i] ;
break;
}
}
ll len_res = res.size();
for(ll len = len_res - 1; len > 0; len--) {
if(res.substr(len_res - len) == res.substr(0, len)) {
res = res.substr(0, len_res - len);
break;
}
}
if(ans.empty() ) ans = res ;
else if(res.size() < ans.size() ) {
ans = res ;
}
}
_ROOT_ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
srand(time(nullptr));
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1; // cin >> t ;
while(t--) {
init();
ll magic ;
if(n <= 200 ) magic = 100 ;
else magic = 2 ;
while(magic -- ) solve();
cout << ans << el ;
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkgOiBXQSBpbiBSZWFsIExpZmUKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBzaG9ydAojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QiKQojcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIiKQojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzMiKQojcHJhZ21hIEdDQyBvcHRpbWl6ZSgidW5yb2xsLWxvb3BzIikKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gNTA1CiNkZWZpbmUgQml0KGkpICgxTEwgPDwgaSApCiNkZWZpbmUgSU5GICgxbGw8PDMwKQojZGVmaW5lIE5BTUUgImZpbGUiCiNkZWZpbmUgZGVidWcoYSkgY291dCA8PCAjYSA8PCAiID0gIiA8PCBhIDw8IGVuZGw7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKbGwgbiwgbSAsIHEgLCB0bXAgIDsKc3RyaW5nIGFucyA7CnN0cmluZyBhW01BWE5dIDsKc3RyaW5nIGNwW01BWE4gXSA7CgpsbCBsZW5saWVucXVhbihzdHJpbmcgeCwgc3RyaW5nIHkpIHsKICAgIGxsIGxlbjEgPSB4LnNpemUoKTsKICAgIGxsIGxlbjIgPSB5LnNpemUoKTsKCiAgICBmb3IobGwgbGVuID0gbWluKGxlbjEsIGxlbjIpOyBsZW4gPiAwOyBsZW4tLSkgewogICAgICAgIGlmKHguc3Vic3RyKGxlbjEgLSBsZW4pID09IHkuc3Vic3RyKDAsIGxlbikpIHsKICAgICAgICAgICAgcmV0dXJuIGxlbjsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQoKdm9pZCBpbml0KCkgewogICAgY2luID4+IG4gOwogICAgRk9SKGkgLCAxICwgbiApIGNpbiA+PiBhW2ldIDsKICAgIHRtcCA9IG4gOyAKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIG4gPSB0bXAgOwogICAgcmFuZG9tX3NodWZmbGUoYSArIDEgLCBhICsgbiArIDEgKSA7CiAgICBGT1IoaSAsIDEgLCBuICkgY3BbaV0gPSBhW2ldIDsKICAgIHZlY3RvcjxzdHJpbmc+IHZhbGlkOwogICAgRk9SKGksIDEsIG4pIHsKICAgICAgICBib29sIHN1YiA9IGZhbHNlOwogICAgICAgIEZPUihqLCAxLCBuKSB7CiAgICAgICAgICAgIGlmKGkgPT0gaikgY29udGludWU7CiAgICAgICAgICAgIGlmKGNwW2pdLmZpbmQoY3BbaV0pICE9IHN0cmluZzo6bnBvcykgewogICAgICAgICAgICAgICAgaWYgKGNwW2pdLnNpemUoKSA+IGNwW2ldLnNpemUoKSB8fCAoY3Bbal0uc2l6ZSgpID09IGNwW2ldLnNpemUoKSAmJiBpID4gaikpIHsKICAgICAgICAgICAgICAgICAgICBzdWIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKCFzdWIpIHZhbGlkLnB1c2hfYmFjayhjcFtpXSk7CiAgICB9CgogICAgbiA9IHZhbGlkLnNpemUoKTsKCiAgICBGT1IoaSwgMSwgbikgY3BbaV0gPSB2YWxpZFtpIC0gMV07CgogICAgdmVjdG9yPGJvb2w+IGRlYWQobiArIDEsIGZhbHNlKTsKICAgIGxsIHJlbSA9IG47CgogICAgd2hpbGUocmVtID4gMSkgewogICAgICAgIGxsIG1heF9vbCA9IC0xOwogICAgICAgIGxsIGJlc3RfdSA9IC0xLCBiZXN0X3YgPSAtMTsKCiAgICAgICAgRk9SKGksIDEsIG4pIHsKICAgICAgICAgICAgaWYoZGVhZFtpXSkgY29udGludWU7CiAgICAgICAgICAgIEZPUihqLCAxLCBuKSB7CiAgICAgICAgICAgICAgICBpZihkZWFkW2pdIHx8IGkgPT0gaikgY29udGludWU7CgogICAgICAgICAgICAgICAgbGwgdG1wID0gbGVubGllbnF1YW4oY3BbaV0sIGNwW2pdKTsKICAgICAgICAgICAgICAgIGlmKHRtcCA+PSBtYXhfb2wpIHsKICAgICAgICAgICAgICAgICAgICBpZih0bXAgPT0gbWF4X29sICkgeyAKICAgICAgICAgICAgICAgICAgICAgaWYocmFuZCgpICUgMiA9PSAwICkgY29udGludWUgOyAgICAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbWF4X29sID0gdG1wOwogICAgICAgICAgICAgICAgICAgIGJlc3RfdSA9IGk7CiAgICAgICAgICAgICAgICAgICAgYmVzdF92ID0gajsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgY3BbYmVzdF91XSA9IGNwW2Jlc3RfdV0gKyBjcFtiZXN0X3ZdLnN1YnN0cihtYXhfb2wpOwogICAgICAgIGRlYWRbYmVzdF92XSA9IHRydWU7CiAgICAgICAgcmVtLS07CiAgICAgICAgRk9SKGksIDEsIG4pIHsKICAgICAgICAgICAgaWYoZGVhZFtpXSB8fCBpID09IGJlc3RfdSkgY29udGludWU7CiAgICAgICAgICAgIGlmKGNwW2Jlc3RfdV0uZmluZChjcFtpXSkgIT0gc3RyaW5nOjpucG9zKSB7CiAgICAgICAgICAgICAgICBkZWFkW2ldID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHJlbS0tOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgc3RyaW5nIHJlcyA7CiAgICBGT1IoaSwgMSwgbikgewogICAgICAgIGlmKCFkZWFkW2ldKSB7CiAgICAgICAgICAgIHJlcyA9IGNwW2ldIDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIGxsIGxlbl9yZXMgPSByZXMuc2l6ZSgpOwogICAgZm9yKGxsIGxlbiA9IGxlbl9yZXMgLSAxOyBsZW4gPiAwOyBsZW4tLSkgewogICAgICAgIGlmKHJlcy5zdWJzdHIobGVuX3JlcyAtIGxlbikgPT0gcmVzLnN1YnN0cigwLCBsZW4pKSB7CiAgICAgICAgICAgIHJlcyA9IHJlcy5zdWJzdHIoMCwgbGVuX3JlcyAtIGxlbik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIGlmKGFucy5lbXB0eSgpICkgYW5zID0gcmVzIDsKICAgIGVsc2UgaWYocmVzLnNpemUoKSA8IGFucy5zaXplKCkgKSB7CiAgICAgICAgYW5zID0gcmVzIDsKICAgIH0KfQoKX1JPT1RfIHsKICAgIC8vIGZyZW9wZW4oTkFNRSIuaW5wIiAsICJyIiAsIHN0ZGluKTsKICAgIC8vIGZyZW9wZW4oTkFNRSIub3V0IiAsICJ3Iiwgc3Rkb3V0KSA7CiAgICBzcmFuZCh0aW1lKG51bGxwdHIpKTsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICBpbnQgdCA9IDE7IC8vIGNpbiA+PiB0IDsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBsbCBtYWdpYyAgOwogICAgICAgIGlmKG4gPD0gMjAwICkgbWFnaWMgPSAxMDAgOyAKICAgICAgICBlbHNlIG1hZ2ljID0gMiA7IAogICAgICAgIHdoaWxlKG1hZ2ljIC0tICkgc29sdmUoKTsKICAgICAgICBjb3V0IDw8IGFucyA8PCBlbCA7CiAgICB9CiAgICByZXR1cm4gKDAmMCk7Cn0K