#include<bits/stdc++.h>
using namespace std;
const int N=20;
string str[N];
bool cmp(string a,string b)
{
if(a.size()==b.size()) return a>b;
else
{
int cnt=0,len=min(a.size(),b.size());
for(int i=0;i<len;i++)
{
if(a[i]>b[i]) return true;
else if(a[i]<b[i]) return false;
if(a[i]==b[i]) cnt++;
}
if(cnt==len)
{
if(a.size()>b.size())
{
string c=a.substr(0,b.size()),d=a.substr(b.size());
return cmp(c,d);
}
else
{
string c=b.substr(0,b.size()),d=b.substr(b.size());
return cmp(d,c);
}
}
}
}
void qsort(int l,int r)
{
if(l>=r) return;
string x=str[l+r>>1];
int i=l-1,j=r+1;
while(i<j)
{
do i++;while(cmp(str[i],x));
do j--;while(cmp(x,str[j]));
if(i<j) swap(str[i],str[j]);
}
qsort(l,j),qsort(j+1,r);
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>str[i];
qsort(0,n-1);
for(int i=0;i<n;i++) cout<<str[i];
return 0;
}