#include <cstdio>
#include <cstring>
#define DIM 500010
using namespace std;
FILE *fin = fopen("algsort.in" ,"r");
FILE *fout= fopen("algsort.out","w");
int N, V[DIM], aux[DIM], i, val1, val2, K, nr, j, pas;
void Parseaza(){
/*int M, i;
fgets(S + 1, DIM*10, fin);
M = strlen(S + 1);
for(i = 1; i <= M; i ++){ nr = 0;
while(S[i] >= '0' && S[i] <= '9')
nr = nr * 10 + (S[i++] - '0');
V[++N] = nr; i ++;
}*/
return;
}
void MergeSort(int A[], int B[], int l, int r){
int m = (l + r) >> 1, i, j, k;
if (l == r) return;
MergeSort(A, B, l, m);
MergeSort(A, B, m + 1, r);
for(i=l, j=m+1, k=l; i<=m || j<=r; )
if(j > r || (i <= m && A[i] < A[j]))
B[k++] = A[i++];
else
B[k++] = A[j++];
for(k = l; k <= r; k++) A[k] = B[k];
return;
}
int main(){
fscanf(fin, "%d ", &N);
for(i = 1; i <= N; i ++)
fscanf(fin, "%d", &V[i]);
MergeSort(V, aux, 1, N);
//memset(S, 0, sizeof(S));
for(i = 1; i <= N; i ++){
/* val1 = V[i]; val2 = 0; pas = 0;
while(val1 != 0){
aux[++pas] = val1 % 10;
val1 /= 10;
}
for(j = pas; j >= 1; j --)
S[++K] = aux[j] + '0';
S[++K] = ' ';*/
fprintf(fout, "%d ", V[i]);
}
return 0;
}