#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#define MAX_LENGTH 500005
using namespace std;
int v[MAX_LENGTH];
void quick_sort(int left, int right)
{
int i, j, pos, pivot, ok = 1;
if(left < right - 1)
{
pos = rand() % (right - left) + left;
pivot = v[pos];
i = left - 1;
j = right;
while(ok)
{
do
{
i++;
}while(v[i] < pivot);
do
{
j--;
}while(v[j] > pivot);
if(i < j)
swap(v[i], v[j]);
else
ok = 0;
}
quick_sort(left, j+1);
quick_sort(j+1, right);
}
}
int main()
{
int n, i;
fstream f("algsort.in", ios::in);
fstream g("algsort.out", ios::out);
f >> n;
for(i = 0 ; i < n ; i++)
f >> v[i];
srand(time(NULL));
quick_sort(0, n);
for(i = 0 ; i < n ; i++)
g << v[i] << " ";
return 0;
}