#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int weishu(int long long x)
{
if (x > 9)
return 1 + weishu(x / 10);
else
return 1;
}
int cmp(const void* e1, const void* e2)
{
int a = 0, b = 0;
a=weishu(*(long long*)e1);
b=weishu(*(long long*)e2);
int a1 = pow(10, a - 1);
int b1 = pow(10, b - 1);
int a2 = ((*(long long*)e1) / (pow(10, a - 1)));
int b2 = ((*(long long*)e2) / (pow(10, b - 1)));
if(a2==b2)
return ((*(long long*)e2) * pow(10, a) + (*(long long*)e1)) - ((*(long long*)e1) * pow(10, b) + (*(long long*)e2));
else
{
if (a == b)
return (*(long long*)e2) - (*(long long*)e1);
else if(a>b)
return ((*(long long*)e2)*pow(10,a-b)) - (*(long long*)e1);
else
return (*(long long*)e2) - ((*(long long*)e1)*pow(10,b-a));
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int long long arr[20] = { 0 };
int i = 0;
for (i = 0; i <= n - 1; ++i)
scanf("%lld", &arr[i]);
qsort(arr, n, sizeof(arr[0]), cmp);
for (i = 0; i <= n - 1; ++i)
{
printf("%lld", arr[i]);
}
return 0;
}