import java.io.*;
import java.util.Arrays;
public class Main {
public static int n;
public static final int MAX = 501;
public static int[] arr = new int[MAX];
//表示是多少进制
public static int base = 10;
//词频数组,用于记录数字的每位出现的频率
public static int[] cnts = new int[base];
public static int[] help = new int[MAX];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StreamTokenizer in = new StreamTokenizer(br);
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
while (in.nextToken() != in.TT_EOF) {
n = (int) in.nval;
for (int i = 0; i < n; i++) {
in.nextToken();
arr[i] = (int) in.nval;
}
sort();
for (int i = 0; i < n; i++) {
out.print(arr[i] + " ");
}
out.println();
}
out.flush();
out.close();
}
//计算出一个正整数有几位
public static int bits(int num) {
int ans = 0;
while (num != 0) {
ans++;
num /= base;
}
return ans;
}
public static void sort() {
//如果数组中有负数
int min = arr[0];
for (int i = 0; i < n; i++) {
min = Math.min(min, arr[i]);
}
int max = arr[0] - min;
for (int i = 0; i < n; i++) {
arr[i] = arr[i] - min;
max = Math.max(max, arr[i]);
}
int bits = bits(max);
radixSort(bits);
for (int i = 0; i < n; i++) {
arr[i] = arr[i] + min;
}
}
public static void radixSort(int bits) {
for (int offset = 1; bits > 0; offset *= base, bits--) {
Arrays.fill(cnts, 0);
for (int i = 0; i < n; i++) {
cnts[(arr[i] / offset) % base]++;
}
for (int i = 1; i < base; i++) {
cnts[i] = cnts[i - 1] + cnts[i];
}
for (int i = n - 1; i >= 0; i--) {
help[--cnts[(arr[i] / offset) % base]] = arr[i];
}
for (int i = 0; i < n; i++) {
arr[i] = help[i];
}
}
}
}