#include <stdio.h>

#define PutChar(c) ; *p = (char)(c); ++p;

#define MAX_N (2000001)
#define MAX_Ai (10000)
#define STR_SIZE (10000010)

int getNum(void);
void putNum(int n);
void CountingSort(int A[], int B[], int k, int lenA);

int A[MAX_N];
int B[MAX_N];
char str[STR_SIZE];
char *p = str;

int main(void) {
	register int i;
	int n;

	fread(str, 1, STR_SIZE, stdin);
	
	n = getNum();
	
	for (i = 1; i <= n; ++i) {
		A[i] = getNum();
	}
	
	CountingSort(A, B, MAX_Ai, n);
	
	p = str;
	--n;
	for (i = 1; i <= n; ++i) {
		putNum(B[i]);
		PutChar(' ');
	}
	putNum(B[i]);
	PutChar('\n');
	PutChar('\0');
	
	puts(str);
	
	return 0;
}

int getNum(void) {
	int n = 0;
	while ((*p >= '0') && (*p <= '9')) {
		n = n * 10 + (int)(*p - '0');
		++p;
	}
	++p;
	return n;
}

void putNum(int n) {
	int d;
	if (n < 10) {
		PutChar('0' + n);
		return;
	}
	d = n / 10;
	if (d) putNum(d);
	PutChar('0' + (n - (d * 10)));
}

void CountingSort(int A[], int B[], int k, int len) {
	int C[MAX_Ai] = { 0 };
	int i, j;
	for (j = 1; j <= len; ++j) {
		++C[A[j]];
	}
	for (i = 1; i <= k; ++i) {
		C[i] += C[i - 1];
	}
	for (j = len; j > 0; --j) {
		B[C[A[j]]] = A[j];
		--C[A[j]];
	}
}