#include <fstream>
void
f(int v[500001],
int b,
int e)
{
if (b >= e)
{
return;
}
int i = b + 1;
int j = e;
while (i <= j)
{
while (i <= j and v[i] <= v[b])
{
i++;
}
while (i <= j and v[b] <= v[j])
{
j--;
}
if (i < j)
{
std::swap(v[i], v[j]);
}
}
std::swap(v[j], v[b]);
f(v, b, j - 1);
f(v, i, e);
}
int main()
{
std::ifstream in("algsort.in");
std::ofstream out("algsort.out");
int N;
int v[500001];
in >> N;
for (int i = 0; i < N; i++)
{
in >> v[i];
}
f(v, 0, N - 1);
for (int i = 0; i < N; i++)
{
out << v[i] << ' ';
}
return 0;
}