#include<stdio.h>
#define N 1000000

int main(){
  int i,j,k,v,n,g,m=0,cnt=0;
  int A[N],G[N];

  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf("%d",&A[i]);
  }
  G[0]=1;

  for(i=1;G[i-1]<=n;i++){
    m++;
    G[i]=G[i-1]*3+1;
    if(m>100){
	break;
    }
  }
  for(i=0;i<m/2;i++){
    g=G[i];
    G[i]=G[m-i-1];
    G[m-i-1]=g;
  }

  for(i=0;i<m;i++){
    for(j=G[i];j<n;j++){
      v=A[j];
      k=j-G[i];
      while(k>=0&&A[k]>v){
	A[k+G[i]]=A[k];
	k=k-G[i];
	cnt++;
      }
      A[k+G[i]]=v;
    }
  }
  printf("\n");
  printf("%d\n",m);

  for(i=0;i<m;i++){
    printf("%d",G[i]);
    printf(" ");
  }
  printf("\n");
  printf("%d\n",cnt);

  for(i=0;i<n;i++){
    printf("%d\n",A[i]);
   
  }
  return 0;
}