#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500001];
void merge( int st, int dr, int mij)
{
int array1[500001], array2[500001];
for(int i=st;i<=mij;i++)
array1[i] = v[i];
for(int i=mij+1;i<=dr;i++)
array2[i] = v[i];
int index1 = st;
int index2 =mij+1;
int max1 = mij + 1, max2 = dr +1, index = st;
while(index1 < max1 && index2 < max2)
{
if(array1[index1] <= array2[index2])
{
v[index] = array1[index1];
index1++;
}
else
{
v[index] = array2[index2];
index2++;
}
index++;
}
while(index1 < max1)
{
v[index] = array1[index1];
index1++;
index++;
}
while(index2 < max2)
{
v[index] = array2[index2];
index2++;
index++;
}
}
void mergesort( int st, int dr)
{
if(st>=dr)
{
return;
}
int mij = (dr+st)/2;
mergesort(st,mij);
mergesort(mij+1,dr);
merge(st,dr,mij);
}
int main()
{
long n, i;
fin>>n;
for(i=0;i<n;i++)
{
fin>>v[i];
}
mergesort(0,n-1);
for(i=0;i<n;i++)
fout<<v[i]<<" ";
}