// Name: Counting Sort
// Level: 1
// Category: Sort, ?????????
// Note: Counting Sort, ?¨???°?????????
/*
?????????????????§??? 0 <= A[i] <= 10000 ????????§
unsigned short ???????????¨?????¢??????????´???§??????.
(unsigned short(0~65535) => 2byte, int(?????????????????????) => 4byte)
*/

#include <stdio.h>
#include <stdlib.h>

#define VMAX 10000

int n;

void counting_sort(unsigned short A[], unsigned short B[], int k) {
    int C[k+1], i;
    for (i = 0; i <= k; i++) { C[i] = 0; }
    for (i = 0; i < n; i++ ) { C[A[i]]++; }
    for (i = 1; i <= VMAX; i++) { C[i] = C[i] + C[i-1]; }
    for (i = n-1; i >= 0; i--){
        B[C[A[i]]-1] = A[i];
        C[A[i]]--;
    }
}

int main() {
    unsigned short *A, *B;
    int i;

    scanf("%d", &n);

    A = malloc(sizeof(short)*n+1);
    B = malloc(sizeof(short)*n+1);

    for (i = 0; i < n; i++ ) { scanf("%hu", &A[i]); }

    counting_sort(A, B, 10000);

    for (i = 0; i < n; i++) {
        printf("%d", B[i]);
        printf( (i == n-1) ? "\n" : " ");
    }
    return 0;
}