#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 100010;
const int BIT = 16;
const int U = 65536;
int n, a[MAXN];
inline int getd( int x, int d ) {
return (x>>(d*BIT))&(U-1);
}
int cnt[U], b[MAXN];
void radix_sort() {
int *x = a, *y = b;
for( int d = 0; d < 2; ++d ) {
for( int i = 0; i < U; ++i ) cnt[i] = 0;
for( int i = 0; i < n; ++i ) ++cnt[getd(x[i],d)];
for( int i = 1; i < U; ++i ) cnt[i] += cnt[i-1];
for( int i = n-1; i >= 0; --i ) y[--cnt[getd(x[i],d)]] = x[i];
swap(x,y);
}
fwrite(x,1,n*4,stdout);
//for( int i = 0; i < n; ++i ) printf( "%d ", x[i] );
}
int main() {
//scanf( "%d", &n );
//for( int i = 0; i < n; ++i ) scanf( "%d", a+i );
fread(a,1,MAXN*4,stdin);
n=a[0];
radix_sort();
return 0;
}