#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int num[100002];
int getRandom(int l, int r)
{
int x, y, z;
x = rand() % (r - l + 1) + l;
y = rand() % (r - l + 1) + l;
z = rand() % (r - l + 1) + l;
while (num[x] < num[y] || num[y] < num[z])
{
if (num[x] < num[y])
{
swap(x, y);
}
if (num[y] < num[z])
{
swap(z, y);
}
}
return y;
}
void qsort(int left, int right)
{
if (left>=right)
{
return;
}
int standard;
int r = getRandom(left, right);
swap(num[r], num[right]);
standard = num[right];
int index = left-1;
for (int i = left; i < right; i++)
{
if (num[i]<=standard)
{
swap(num[i], num[index + 1]);
index++;
}
}
swap(num[right], num[index + 1]);
index++;
qsort(left, index - 1);
qsort(index + 1, right);
}
int main()
{
srand(time(NULL));
int n; cin >> n;
for (int i = 0; i < n; i++)
{
cin >> num[i];
}
qsort(0, n - 1);
for (int i = 0; i < n; i++)
{
cout << num[i] << " ";
}
}