#include <bits/stdc++.h>
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
void bubble(int *x, int n) {
for (int i = 1; i < n; i ++) {
bool sorted = true;
for(int j = 1; j < n; j ++) {
if (x[j-1] > x[j]) {
sorted = false;
std::swap(x[j-1], x[j]);
}
}
if (sorted)
break;
}
}
void mergeSort(int *x, int left, int right) {
if (left == right)
return;
int mid = (left + right) / 2;
mergeSort(x, left, mid);
mergeSort(x, mid+1, right);
std::vector <int> v;
for(int i=left, j=mid+1;;) {
if (i == mid + 1 and j == right + 1)
break;
if (i == mid + 1)
v.push_back(x[j]), j ++;
else if (j == right + 1)
v.push_back(x[i]), i ++;
else if (x[i] < x[j])
v.push_back(x[i]), i ++;
else v.push_back(x[j]), j ++;
}
for(int i = left; i <= right; i ++)
x[i] = v[i-left];
}
void quicksort(int x[], int left, int right) {
if(left >= right)
return;
int pivot = x[(left + right) / 2];
int i = left - 1, j = right + 1;
while (true) {
do {
i = i + 1;
}while(x[i] < pivot);
do {
j = j - 1;
}while(x[j] > pivot);
if (i >= j) {
pivot = j;
break;
}
std::swap(x[i], x[j]);
}
quicksort(x, left, pivot);
quicksort(x, pivot + 1, right);
}
int main() {
srand(time(0));
int x[500005];
int n;
fin >> n;
for (int i = 0; i < n; i ++)
fin >> x[i];
quicksort(x, 0, n-1);
for (int i = 0; i < n; i++)
fout << x[i] << ' ';
return 0;
}