#include <iostream>
#include <ctime>
#include <cstdlib>
#define maxn 100000
using namespace std;
int partion(int a[], int start, int end);
void QuickSort(int a[], int start, int end);
void swap(int &a, int &b);
int main(){
int n, a[maxn];
cin >> n;
for(int i=0; i<n; i++)
cin >> a[i];
QuickSort(a, 0, n-1);
for(int i=0; i<n; i++)
cout << a[i] <<" ";
}
void swap(int &a, int &b){
int tmp = a;
a = b;
b = tmp;
}
int partion(int a[], int start, int end){
srand(time(0));
int randIdx = rand()%(end+1-start) + start;
// cout<<pivot<<endl;
swap(a[start], a[randIdx]);
int pivot = start;
int j = start+1;
for(int i=start+1; i<=end; i++){
if(a[i] <= a[pivot]){
swap(a[i], a[j]);
j++;
}
}
swap(a[pivot], a[j-1]);
pivot = j-1;
return pivot;
}
void QuickSort(int a[], int start, int end){
int pivot;
if(start >= end)
return;
pivot = partion(a, start, end);
QuickSort(a, start, pivot-1);
QuickSort(a, pivot+1, end);
}