import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++)
a[i] = in.nextInt();
merge_sort(a, 0, a.length - 1);
for (int i : a)
System.out.print(i + " ");
}
public static void merge_sort(int[] a, int l, int r) {
if (l >= r)
return;
int mid = l + r >> 1;
//一分为二
merge_sort(a, l, mid);
merge_sort(a, mid + 1, r);
//合二为一
int[] temp = new int[r - l + 1];
int i = l;
int j = mid + 1;
int idx = 0;
while (i <= mid && j <= r) {
if (a[i] >= a[j])
temp[idx++] = a[j++];
else
temp[idx++] = a[i++];
}
while (i <= mid)
temp[idx++] = a[i++];
while (j <= r)
temp[idx++] = a[j++];
//还原数组
for (int k = 0; k < temp.length; k++)
a[k + l] = temp[k];
}
}