//插入排序
#include<cstdio>
#include<iostream>
using namespace std;
int a[100000];
void insert(int n)
{
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
int j=i-1;
while(j>=1 && a[j]>a[j+1])
{
swap(a[j],a[j+1]);
j--;
}
}
}
void print(int n)
{
for(int i=1; i<=n; i++)
printf("%d ",a[i]);
printf("\n");
}
int main()
{
int n;
while(cin>>n)
{
insert(n);
print(n);
}
return 0;
}
//希尔排序
#include<cstdio>
#include<iostream>
using namespace std;
int a[100000];
void print(int n)
{
for(int i=1; i<=n; i++)
printf("%d ",a[i]);
printf("\n");
}
void init(int n)
{
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
}
void Shellsort(int n)
{
int d=n;
while(d)
{
d/=2;
for(int i=1; i<=n; i++)
{
int j=i-d;
int tmp=a[i];
for(;j>=1 && a[j]>tmp; j-=d)
{
a[j+d]=a[j]; //向前比较,向后赋值
}
a[j+d]=tmp;
}
}
}
int main()
{
int n;
while(cin>>n)
{
init(n);
Shellsort(n);
print(n);
}
return 0;
}