#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int NMAX = 5e5;
int N;
int v[NMAX];
void partition(int v[], int left, int right, int &a, int &b) {
if(right - left <= 1) {
if(v[right] < v[left]) {
swap(v[right], v[left]);
}
a = left;
b = right;
} else {
int mid = left, pivot = v[right];
while(mid <= right) {
if(v[mid] < pivot) {
swap(v[mid], v[left]);
mid++;
left++;
} else if(v[mid] == pivot) {
mid++;
} else {
swap(v[mid], v[right]);
right--;
}
}
}
a = left - 1;
b = right + 1;
}
void quickSort(int v[], int left = 0, int right = N - 1) {
while(left <= right) {
int a, b;
partition(v, left, right, a, b);
if(a - left + 1 < right - b + 1) {
quickSort(v, left, a);
left = b;
} else {
quickSort(v, b, right);
right = a;
}
}
}
int main() {
ios_base :: sync_with_stdio(false);
fin >> N;
for(int i = 0; i < N; i++) {
fin >> v[i];
}
quickSort(v);
for(int i = 0; i < N; i++) {
fout << v[i] << " ";
}
fin.close();
fout.close();
return 0;
}