#include <iostream>//Sortare cu Batog
#include <fstream>
#include <cmath>
#define INF 2147483647
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500001],n,bucata[1001],index=-1,k;
void update(int poz)
{
int i,start;
a[poz]=INF;
start=k*(poz/k);
bucata[poz/k]=poz;
for(i=start;i<=start+k-1;i++)
{
if(a[bucata[poz/k]]>a[i])
{
bucata[poz/k]=i;
}
}
}
int query(int st,int dr)
{
int minim;
minim=st;
while(st<dr && st%k!=0 && st!=0)
{
if(a[minim]>a[st])
{
minim=st;
}
st++;
}
while(st+k<=dr)
{
if(a[minim]>a[bucata[st/k]])
{
minim=bucata[st/k];
}
st=st+k;
}
while(st<=dr)
{
if(a[minim]>a[st])
{
minim=st;
}
st++;
}
return minim;
}
int main()
{
int i,poz;
f>>n;
k=sqrt(n);
for(i=0;i<n;i++)
{
f>>a[i];
if(i%k==0)
{
index++;
bucata[index]=i;
}
if(a[bucata[index]]>a[i])
{
bucata[index]=i;
}
}
for(i=0;i<n;i++)
{
poz=query(0,n-1);
g<<a[poz]<<" ";
update(poz);
}
return 0;
}