#include <fstream>
#include <iostream>
int n;
int arr[500000];
void
f(int beg,
int end)
{
int i;
int j;
if (beg >= end)
{
return;
}
if (beg == end - 1)
{
if (arr[beg] > arr[end])
{
int temp;
temp = arr[beg];
arr[beg] = arr[end];
arr[end] = temp;
}
return;
}
i = beg + 1;
j = end;
while (i <= j)
{
while ( (i <= j) and
(arr[i] <= arr[beg]) )
{
++i;
}
while ( (i <= j) and
(arr[j] >= arr[beg]) )
{
--j;
}
if (i <= j)
{
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
++i;
--j;
}
int temp;
temp = arr[beg];
arr[beg] = arr[j];
arr[j] = temp;
f(beg, j - 1);
f(i, end);
}
int main()
{
std::ifstream mama("algsort.in");
std::ofstream tata("algsort.out");
mama >> n;
for (int i = 0; i < n; ++i)
{
mama >> arr[i];
}
f(0, n - 1);
for (int i = 0; i < n; ++i)
{
tata << arr[i] << ' ';
}
return 0;
}