using namespace std;
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <string>
#include <fstream>
#include <algorithm>
#define N 500001
#define dim 8192
char ax[dim];
int pz;
char bx[dim];
int pz2;
inline void cit(int &x)
{
x=0;
while(ax[pz]<'0' || ax[pz]>'9')
if(++pz==dim)fread(ax,1,dim,stdin),pz=0;
while(ax[pz]>='0' && ax[pz]<='9')
{
x=x*10+ax[pz]-'0';
if(++pz==dim)fread(ax,1,dim,stdin),pz=0;
}
}
inline void afis(int x)
{
//printf("%d ", x);
int t=0;
while(x) t=t*10+x%10, x/=10;
// printf("%d\n", t);
while(t)
{
bx[pz2]=t%10 + '0';
t/=10;
if(++pz2 == dim) fwrite(bx, 1, dim, stdout),pz2=0;
}
bx[pz2]=' ';
if(++pz2 == dim) fwrite(bx,1,dim,stdout),pz2=0;
}
int a[N], b[N];
inline void rad(int n, int byte, int a[], int b[])
{
int cnt[256], ind[256],i;
memset(cnt, 0, sizeof(cnt));
for(i=1; i <= n; ++i) ++cnt[(a[i]>>byte)&255];
ind[0]=1;
for(i=1; i < 256; ++i) ind[i]=ind[i-1]+cnt[i-1];
for(i=1; i <= n; ++i) b[ind[(a[i]>>byte)&255]++]=a[i];
}
inline void radix(int a[], int n)
{
rad(n, 0, a, b);
rad(n, 8, b, a);
rad(n, 16, a, b);
rad(n, 24, b, a);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
//ofstream g("algsort.out");
int n,i;
cit(n);
for(i=1;i<=n;++i) cit(a[i]);
radix(a,n);
//sort(a+1,a+n+1);
for(i=1;i<=n;++i) afis(a[i]);//printf("%d ", a[i]);
fwrite(bx, 1, dim, stdout);
return 0;
}