#include<fstream>
#include<cmath>
#define numaru 5000000
#define nrmare (1<<30)-1
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[numaru],bb[2500][2],l,nrz,n;
void citeste()
{
int i;
f>>n;
l=sqrt(n);
nrz=n/l;
if(n%l!=0)++nrz;
for(i=0;i<nrz;++i) { bb[i][0]=nrmare; bb[i][1]=i*l; }
for(i=0;i<n;++i)
{
f>>v[i];
if(v[i]<bb[i/l][0])
{
bb[i/l][0]=v[i];
bb[i/l][1]=i;
}
}
}
void verif()
{
g<<"\n{\n"; for(int i=0;i<nrz;++i) g<<" "<<bb[i][0]<<" "<<bb[i][1]<<"\n"; g<<"}\n";
}
void operatiunea_sortarea()
{
int i,_min,_minpoz,j,ed;
for(j=0;j<n;++j)
{
_min=nrmare;
for(i=0;i<nrz;++i)
if(_min>bb[i][0])
{
_min=bb[i][0];
_minpoz=i;
}
g<<_min<<" ";
v[bb[_minpoz][1]]=nrmare;
bb[_minpoz][0]=nrmare;
ed=(bb[_minpoz][1]/l+1)*l; if(n<ed) ed=n;
for(i=bb[_minpoz][1]/l*l;i<ed;++i)
{
if(v[i]<bb[_minpoz][0])
{
bb[_minpoz][0]=v[i];
bb[_minpoz][1]=i;
}
}
}
}
int main()
{
citeste();
operatiunea_sortarea();
f.close();
g.close();
return 0;
}