#include<stdio.h>
#include<stdlib.h>
#define Max 10000

void counting_sort(int a[], int b[], int n)
{
    int  i;

    /* カウンタ(キーの出現回数)を初期化 */
    for (i = 0; i <= M; i++)
        count[i] = 0;

    /* キーの出現回数 */
    for (i = 0; i < n; i++)
        count[a[i]]++;

    /* 数え上げたキーの累積度数分布 */
    for (i = 0; i < M; i++) {
        count[i+1] += count[i];
    }

    /* 度数分布に従ってデータを配列aから配列bにコピーする */
    for (i = n - 1; i >= 0; i--) {
        b[--count[a[i]]] = a[i];
    }
}

int main(){
  int *a,*b;

  int c[Max+1];
  int n,i,j;
  scanf("%d",&n);

  a=malloc(sizeof(int)*n+1);
  b=malloc(sizeof(int)*n+1);

  counting_sort(a,b,Max);
  for(i=1;i<=n;i++){
    if(i>1)printf(" ");
    printf("%d",b[i]);
  }
  printf("\n");
  return 0;
}

