#include<stdio.h>
#include<stdlib.h>
#define MAX 2000001
#define VMAX 10000

int main(){
    unsigned short *A,*B;
    int C[VMAX+1];
    int n,i,j;

    scanf("%d",&n);

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

    for(i=0;i<n;i++){
        scanf("%hd",&A[i]);
    }
    //配列Cの初期化
    for(i=0;i<=VMAX;i++){
        C[i] = 0;
    }
    //Cのcount
    for(i=0;i<n;i++){
        C[A[i]]++;
    }
    //Cの累積和
    for(i=1;i<=VMAX;i++){
        C[i] = C[i] + C[i-1];
    }
    for(i=n-1;i>=0;i--){
        for(j=0;j<=VMAX;j++){
            if(A[i] == j){
                B[C[j]] = A[i];
                C[j]--;
            }
        }
    }
    for(i=1;i<=n;i++){
        if(i<n) printf("%d ",B[i]);
        else printf("%d\n",B[i]);
    }
    return 0;
}
