import java.util.Scanner;
import java.lang.Math;
public class MaxNum {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int size=sc.nextInt(),i,j,k,temp,a,b,c;
int [] NumbMas=new int [size];
int [] raz=new int [size];
for (i=0;i<size;i++)
{
NumbMas[i]=sc.nextInt();
temp=NumbMas[i];
while(temp>0)
{
temp=temp/10;
raz[i]++;
}
}
for (i=size-1;i>0;i--)
{
for (j=0;j<i;j++)
{
for (k=0;k<=raz[j] & k<=raz[j+1];k++)
{
a=(int)(NumbMas[j]/Math.pow(10,raz[j]-(k+1)))%10;
b=(int)(NumbMas[j+1]/Math.pow(10,raz[j+1]-(k+1)))%10;
if ((k==raz[j] | k==raz[j+1] )) {
if (raz[j] == 1 & (a < b)) {
temp = NumbMas[j];
NumbMas[j] = NumbMas[j + 1];
NumbMas[j + 1] = temp;
temp = raz[j];
raz[j] = raz[j + 1];
raz[j + 1] = temp;
break;
} else if (raz[j] > raz[j + 1]) {
for (c = 1; c <= (raz[j] - raz[j + 1]); c++) {
if ((int) (NumbMas[j] / Math.pow(10, raz[j] - (c))) % 10 < (int) (NumbMas[j] / Math.pow(10, (raz[j] - raz[j + 1]) - c)) % 10)
break;
else {
temp = NumbMas[j];
NumbMas[j] = NumbMas[j + 1];
NumbMas[j + 1] = temp;
temp = raz[j];
raz[j] = raz[j + 1];
raz[j + 1] = temp;
break;
}
}
} else if (raz[j + 1] > raz[j]) {
for (c = 1; c <= (raz[j + 1] - raz[j]); c++) {
if ((int) (NumbMas[j + 1] / Math.pow(10, raz[j + 1] - (c))) % 10 > (int) (NumbMas[j + 1] / Math.pow(10, (raz[j + 1] - raz[j]) - c)) % 10)
break;
else {
temp = NumbMas[j];
NumbMas[j] = NumbMas[j + 1];
NumbMas[j + 1] = temp;
temp = raz[j];
raz[j] = raz[j + 1];
raz[j + 1] = temp;
break;
}
}
}
}
if(a<b & !(k==raz[j] | k==raz[j+1]))
{
temp=NumbMas[j];
NumbMas[j]=NumbMas[j+1];
NumbMas[j+1]=temp;
temp=raz[j];
raz[j]=raz[j+1];
raz[j+1]=temp;
break;
}
if (a>b)
break;
}
}
}
for (i=0;i<size-1;i++)
{
if (NumbMas[i]==0)
{
temp=NumbMas[i];
NumbMas[i]=NumbMas[i+1];
NumbMas[i+1]=temp;
temp=raz[i];
raz[i]=raz[i+1];
raz[i+1]=temp;
}
}
for (i=0;i<size;i++)
{
System.out.print(NumbMas[i]);
}
}
}