#include<fstream>
using namespace std;
int gaps[8] = {701, 301, 132, 57, 23, 10, 4, 1}, gap;
int a[500002],n,i,j,temp;
fstream fin, fout;
int main()
{
fin.open("algsort.in",ios::in);
fout.open("algsort.out",ios::out);
fin>>n;
for (i=0;i<n;i++)fin>>a[i];
for (gap=0; gap<8;gap++)
{
//Do an insertion sort for each gap size.
for (i = gap; i < n; i++)
{
temp = a[i];
for (j = i; j >= gap && a[j - gap] > temp; j -= gap)
{
a[j] = a[j - gap];
}
a[j] = temp;
}
}
for (i=0;i<n;i++) fout<<a[i]<<" ";
fin.close();
fout.close();
return 0;
}