#include<stdio.h>
FILE *f = fopen("algsort.in","r");
FILE *g = fopen("algsort.out","w");
#define MaxN 1200100
#define INF (1<<31)
#define mij ((li+ls)>>1)
int N;
int AINT[MaxN];
void initializare(void)
{
for(int i=0;i<MaxN;i++)
AINT[i] = INF;
}
inline int min(int a,int b)
{
return a < b ? a : b;
}
inline int pozAINT(int li,int ls,int poz)
{
if(li == ls)
return li;
if(AINT[poz] == AINT[poz<<1])
return pozAINT(li,mij,poz<<1);
else
return pozAINT(mij+1,ls,(poz<<1)+1);
}
inline void insertAINT(int li,int ls,int poz,int poz2,int val)
{
if(li == ls)
{
AINT[poz] = val;
return ;
}
if(poz2 <= mij)
insertAINT(li,mij,poz<<1,poz2,val);
else
insertAINT(mij+1,ls,(poz<<1)+1,poz2,val);
AINT[poz] = min(AINT[poz<<1],AINT[(poz<<1)+1]);
}
void citire(void)
{
int a;
initializare();
fscanf(f,"%d",&N);
for(int i=1;i<=N;i++)
{
fscanf(f,"%d",&a);
insertAINT(1,N,1,i,a);
}
}
void afisare(void)
{
for(int i=1;i<=16;i++)
printf("%d ",AINT[i]);
printf("\n");
}
void sortare(void)
{
for(int i=1;i<=N;i++)
{
fprintf(g,"%d ",AINT[1]);
insertAINT(1,N,1,pozAINT(1,N,1),INF);
}
}
int main()
{
citire();
sortare();
}