/*
  Copyright 2011 Marek "p2004a" Rusinowski
  Merge sort
*/
#include <cstdio>

#define MAXN 1000000

int array[MAXN];
int tmp_array[MAXN];

void merge(int *begin, int *center, int *end) {
  int *i1 = begin, *i2 = center, i = 0;
  while (i1 != center || i2 != end) {
    if (((*i1 < *i2) || (i2 == end)) && (i1 != center)) {
      tmp_array[i++] = *(i1++);
    } else {
      tmp_array[i++] = *(i2++);
    }
  }
  for (int j = 0; begin != end; ++j) {
    *(begin++) = tmp_array[j];
  }
}

void sort(int *begin, int *end) {
  if (begin + 1 >= end) return;
  int *center = (end - begin) / 2 + begin;
  sort(begin, center);
  sort(center, end);
  merge(begin, center, end);
}

int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &array[i]);
  }
  sort(array, array + n);
  for (int i = 0; i < n; ++i) {
    printf("%d ", array[i]);
  }
  printf("\n");
  return 0;
}
