#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MaxSize 1000
typedef struct LListNode{
char str[MaxSize];
}LListNopde, *LList;
void sort_struct(LList l,int n){//直接插入排序思想
int i,j;
char temp[1000] ;
for(i = 1;i <= n;i++){
strcpy(temp, (l + i)->str);
j = i - 1;
while(j >= 0 && (strcmp(temp,(l + j)->str)) < 0){
strcpy((l+j+1)->str, (l+j)->str);
j--;
}
strcpy((l + j + 1)->str,temp);
}
}
int main() {
int n,i;
scanf("%d",&n);
getchar();//清除掉缓冲区的'\n'
LList l;
l = (LListNopde *)malloc(sizeof(LListNopde) * n);
for(i = 0;i < n;i++){
fgets((l + i)->str,sizeof((l + i)->str),stdin);//此处fgets读入的str以'\n'结尾
}
sort_struct(l, n - 1);//排序函数
for( i = 0;i < n;i++){
printf("%s",(l + i)->str);
}
return 0;
}