#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char really_num[11];
char cmp_num[11];
}number;
int compare(const void*e1, const void*e2)
{
return strcmp(((number*)e2)->cmp_num, ((number*)e1)->cmp_num);
}
int main()
{
int n;
scanf("%d", &n);
number*arr = (number*)malloc(n*sizeof(number));
for (int i = 0; i<n; i++)
{
scanf("%s", arr[i].really_num);
strcpy(arr[i].cmp_num ,arr[i].really_num);
int len = strlen(arr[i].really_num);
if (len<10)
{
for (int j = len; j<10; j++)
{
arr[i].cmp_num[j] = '0';
}
arr[i].cmp_num[10] = '\0';
}
}
qsort(arr, n, sizeof(number), compare);
for (int i = 0; i<n; i++)
{
printf("%s", arr[i].really_num);
}
free(arr);
return 0;
}