#include <iostream>
#include <string>
#include <vector>
using namespace std;
string solve(vector <string> &input, int n)
{
string output = input[0];
for(int i=1;i<n;i++)
{
//cout << input[i]<<"processing"<<endl;
if(output.find(input[i])!=std::string::npos)
{
//cout<<i<<" "<<input[i]<< " not added"<<endl;
continue;
}
for(int j=0;j<input[i].size();j++)
{
//cout <<i<<" "<<input[i].substr(0,input[i].size()-j)<<endl;
if(input[i].substr(0,input[i].size()-j)==output.substr(output.size()-input[i].size()+j,input[i].size()-j))
{
//cout <<"match found"<<endl;
output+=(input[i].substr(input[i].size()-j,j));
//cout<<i<<" "<<output<<endl;
break;
}
}
if(output.find(input[i])==std::string::npos)
{
output+=input[i];
}
}
return output;
}
int main()
{
int n;
vector <string> input;
string temp;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> temp;
input.push_back(temp);
}
string output = solve(input, n);
cout << output;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cmluZyBzb2x2ZSh2ZWN0b3IgPHN0cmluZz4gJmlucHV0LCBpbnQgbikKewoJc3RyaW5nIG91dHB1dCA9IGlucHV0WzBdOwoJZm9yKGludCBpPTE7aTxuO2krKykKCXsKCQkvL2NvdXQgPDwgaW5wdXRbaV08PCJwcm9jZXNzaW5nIjw8ZW5kbDsKCQlpZihvdXRwdXQuZmluZChpbnB1dFtpXSkhPXN0ZDo6c3RyaW5nOjpucG9zKQoJCXsKCQkgICAgLy9jb3V0PDxpPDwiICI8PGlucHV0W2ldPDwgIiBub3QgYWRkZWQiPDxlbmRsOwoJCQljb250aW51ZTsKCQl9CgkJZm9yKGludCBqPTA7ajxpbnB1dFtpXS5zaXplKCk7aisrKQoJCXsKCQkJLy9jb3V0IDw8aTw8IiAiPDxpbnB1dFtpXS5zdWJzdHIoMCxpbnB1dFtpXS5zaXplKCktaik8PGVuZGw7IAoJCQlpZihpbnB1dFtpXS5zdWJzdHIoMCxpbnB1dFtpXS5zaXplKCktaik9PW91dHB1dC5zdWJzdHIob3V0cHV0LnNpemUoKS1pbnB1dFtpXS5zaXplKCkraixpbnB1dFtpXS5zaXplKCktaikpCgkJCXsKCQkJCS8vY291dCA8PCJtYXRjaCBmb3VuZCI8PGVuZGw7CgkJCQlvdXRwdXQrPShpbnB1dFtpXS5zdWJzdHIoaW5wdXRbaV0uc2l6ZSgpLWosaikpOwoJCQkJLy9jb3V0PDxpPDwiICI8PG91dHB1dDw8ZW5kbDsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCWlmKG91dHB1dC5maW5kKGlucHV0W2ldKT09c3RkOjpzdHJpbmc6Om5wb3MpCgkJewoJCSAgICBvdXRwdXQrPWlucHV0W2ldOwoJCX0KCX0KCXJldHVybiBvdXRwdXQ7Cn0KCmludCBtYWluKCkKewoJaW50IG47Cgl2ZWN0b3IgPHN0cmluZz4gaW5wdXQ7CglzdHJpbmcgdGVtcDsKCWNpbiA+PiBuOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQljaW4gPj4gdGVtcDsKCQlpbnB1dC5wdXNoX2JhY2sodGVtcCk7Cgl9CglzdHJpbmcgb3V0cHV0ID0gc29sdmUoaW5wdXQsIG4pOwoJY291dCA8PCBvdXRwdXQ7CglyZXR1cm4gMDsKfQ==