import java.io.*;
import java.util.*;
class countingSortWithNegative{
int len
= Integer.
parseInt(br.
readLine()); // int range = Integer.parseInt(br.readLine());
String st
[] = br.
readLine().
split(" ");
int arr[] = new int[len];
int i;
for(i = 0; i < len; i++){
}
countSort(arr);
}
static void countSort(int arr[]){
int len = arr.length;
int min = arr[0];
int max = arr[0];
int i;
for(i = 1 ; i < len; i++){
if(arr[i] > max){
max = arr[i];
}
else if(arr[i] < min){
min = arr[i];
}
}
int range = max-min+1;
int count[] = new int[range+1];
for(i = 0 ; i < len; i++){
count[arr[i]-min]++;
}
for(i = 1; i < count.length; i++){
count[i] += count[i-1];
}
int result[] = new int[len];
for(i = len-1; i >= 0; i--){
result[count[arr[i]-min]-1] = arr[i];
count[arr[i]-min]--;
}
for(i = 0 ; i <len; i++){
System.
out.
print(result
[i
] + " "); }
}
}
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgY291bnRpbmdTb3J0V2l0aE5lZ2F0aXZlewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJnKSB0aHJvd3MgSU9FeGNlcHRpb257CgkJQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwoKCQlpbnQgbGVuID0gSW50ZWdlci5wYXJzZUludChici5yZWFkTGluZSgpKTsKCS8vCWludCByYW5nZSA9IEludGVnZXIucGFyc2VJbnQoYnIucmVhZExpbmUoKSk7CgoJCVN0cmluZyBzdFtdID0gYnIucmVhZExpbmUoKS5zcGxpdCgiICIpOwoKCQlpbnQgYXJyW10gPSBuZXcgaW50W2xlbl07CgoJCWludCBpOwoKCQlmb3IoaSA9IDA7IGkgPCBsZW47IGkrKyl7CgkJCWFycltpXSA9IEludGVnZXIucGFyc2VJbnQoc3RbaV0pOwoJCX0KCgkJY291bnRTb3J0KGFycik7Cgl9CgoJc3RhdGljIHZvaWQgY291bnRTb3J0KGludCBhcnJbXSl7CgkJaW50IGxlbiA9IGFyci5sZW5ndGg7CgoJCWludCBtaW4gPSBhcnJbMF07CgkJaW50IG1heCA9IGFyclswXTsKCQlpbnQgaTsKCQlmb3IoaSA9IDEgOyBpIDwgbGVuOyBpKyspewoJCQlpZihhcnJbaV0gPiBtYXgpewoJCQkJbWF4ID0gYXJyW2ldOwoJCQl9CgkJCWVsc2UgaWYoYXJyW2ldIDwgbWluKXsKCQkJCW1pbiA9IGFycltpXTsKCQkJfQoJCX0KCQlpbnQgcmFuZ2UgPSBtYXgtbWluKzE7CgoJCWludCBjb3VudFtdID0gbmV3IGludFtyYW5nZSsxXTsKCQkKCQlmb3IoaSA9IDAgOyBpIDwgbGVuOyBpKyspewoJCQljb3VudFthcnJbaV0tbWluXSsrOwoJCX0KCgkJZm9yKGkgPSAxOyBpIDwgY291bnQubGVuZ3RoOyBpKyspewoJCQljb3VudFtpXSArPSBjb3VudFtpLTFdOwoJCX0KCgkJaW50IHJlc3VsdFtdID0gbmV3IGludFtsZW5dOwoKCQlmb3IoaSA9IGxlbi0xOyBpID49IDA7IGktLSl7CgkJCXJlc3VsdFtjb3VudFthcnJbaV0tbWluXS0xXSA9IGFycltpXTsKCQkJY291bnRbYXJyW2ldLW1pbl0tLTsKCQl9CgoJCWZvcihpID0gMCA7IGkgPGxlbjsgaSsrKXsKCQkJU3lzdGVtLm91dC5wcmludChyZXN1bHRbaV0gKyAiICIpOwoJCX0KCX0KfQ==