#include<iostream>
using namespace std;
#define max 20
int i,j;
typedef struct{
int key;
}Redtype;
typedef struct{
Redtype r[max+1];
int length;
}sqlist;
/*void insertsort(sqlist &L) //直接插入排序
{
for( i=2;i<=L.length;i++)
{
if(L.r[i].key<L.r[i-1].key)
{
L.r[0].key=L.r[i].key; //暂存在r[0]
L.r[i]=L.r[i-1]; //替换
for( j=i-1;L.r[j].key>L.r[0].key;j--)
L.r[j+1]=L.r[j]; //寻找插入位置
L.r[j+1]=L.r[0];
/*L.r[0].key=L.r[i].key;
for( j=i-2;L.r[j].key>L.r[0].key;j--)
L.r[j+1]=L.r[j];
L.r[j]=L.r[0]; //注意这种错误,忽略了j的数值变化
}
}
}*/
void Binsertsort(sqlist &L) //折半插入排序
{
int low,high,m;
for(i=2;i<=L.length;i++)
{
L.r[0].key=L.r[i].key;
low=1;
high=i-1;
while(low<=high) //折半寻找插入位置
{
m=(low+high)/2;
if(L.r[m].key>L.r[0].key)high=m-1;
else
low=m+1;
}
for(j=i-1;j>=high+1;j--) //找到插入位置后,元素移位
L.r[j+1].key=L.r[j].key;
L.r[high+1].key=L.r[0].key;
}
}
int main()
{
int i,j;
sqlist s;
cin>>s.length;
for(i=1;i<=s.length;i++)
cin>>s.r[i].key;
//insertsort(s);
Binsertsort(s);
for(i=1;i<=s.length;i++)printf("%d ",s.r[i].key);printf("\n");
}