#include <bits/stdc++.h>
#include <stdlib.h>
using namespace std;
typedef long long ll;

ll cnt;
int l;
int a[1000000];
int n;
vector<int> G;

void insertionsort(int a[],int n,int g){
  for(int i=g;i<n;i++){
    int v=a[i];
    int j=i-g;
    while(j>=0 && a[j]>v){
      a[j+g]=a[j];
      j-=g;
      cnt++;
    }
    a[j+g]=v;
  }
}

void shellsort(int a[],int n){
  for(int h=1;;){
    if(h>n) break;
    G.push_back(h);
    h=3*h+1;
  }
  for(int i=G.size()-1;i>=0;i--){
    insertionsort(a,n,G[i]);
  }
}

int main() {
  cin>>n;
  for(int i=0;i<n;i++) scanf("%d",&a[i]);
  cnt=0;
  shellsort(a,n);
  cout<<G.size()<<endl;
  for(int i=G.size()-1;i>=0;i--){
    printf("%d",G[i]);
    if(i)printf(" ");
  }
  printf("\n");
  printf("%d\n",cnt);
  for(int i=0;i<n;i++) printf("%d\n",a[i]);
  return 0;
}

