#include<iostream>
#include<fstream>
using namespace std;
int x[500001],nr[11];
int maxim(int x[],int n)
{
int i,maxi;
maxi=x[1];
for(i=2;i<=n;i++)
if(x[i]>maxi)
maxi=x[i];
return maxi;
}
void numara(int x[],int n, int cif)
{
int aux[500001],i;
for(i=0;i<=9;i++)
nr[i]=0;
for(i=1;i<=n;i++)
nr[(x[i]/cif)%10]++;
for(i=1;i<=9;i++)
nr[i]=nr[i]+nr[i-1];
for(i=n;i>=1;i--)
{
aux[nr[(x[i]/cif)%10]]=x[i];
nr[(x[i]/cif)%10]--;
}
for(i=1;i<=n;i++)
x[i]=aux[i];
}
void radixsort(int x[],int n)
{
int m,cif,i;
m=maxim(x,n);
cif=1;
while(m/cif>0)
{
numara(x,n,cif);
cif=cif*10;
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int i,n;
f>>n;
for(i=1;i<=n;i++)
f>>x[i];
radixsort(x,n);
for(i=1;i<=n;i++)
g<<x[i]<<" ";
f.close();
g.close();
return 0;
}