#include <iostream>
#include <fstream>
#define Nmax 500000
using namespace std;
ifstream fi("algsort.in");
ofstream fo("algsort.out");
unsigned int v[Nmax+1];
int partitie(int left,int right,int piv)
{
while(left <= right)
{
while(v[left] <piv) left ++;
while(v[right] >piv) right --;
if(left <= right)
{swap(v[left],v[right]);
left ++;
right --;
}
}
return left;
}
void quicksort(int left,int right)
{
if(left >= right) return;
int piv = v[left + (right-left)/2];
int index = partitie(left,right,piv);
quicksort(left,index-1);
quicksort(index,right);
}
int main()
{
int n;
fi >> n;
for(int i = 0; i < n; i ++)
{
fi >> v[i];
}
quicksort(0,n-1);
for(int i = 0; i < n; i ++)
{
fo << v[i]<< " " ;
}
fi.close();
fo.close();
return 0;
}