#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char a[110][1100];
int min(int a,int b)
{
if(a>b)
return b;
return a ;
}
int cmp(int x,int y)
{
char b[1000],c[1000];//本来我在这里想直接对字符串a操作的,但是呢a是全局变量,后面还要输出
strcpy(b,a[x]);
strcpy(c,a[y]);
int i,n1,n2;
char str[1000];
n1=strlen(a[x]);
n2=strlen(a[y]);
//字符串拼接
for(i=n1;i<=n1+n2;i++)
b[i]=c[i-n1];
for(i=n2;i<n1+n2;i++)
c[i]=b[i-n2];
c[i]='\0';
return strcmp(b,c);
}
int main(void)
{
int n,i,j;
char jiaohuan[1000];
while(~scanf("%d",&n))
{
for(i=0;i<n;i++)
scanf("%s",a[i]);
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if(cmp(i,j)<0)
{
strcpy(jiaohuan,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],jiaohuan);
}
}
for(i=0;i<n;i++)
printf("%s",a[i]);
printf("\n");
}
return 0;
}