#include <stdio.h>
#include <math.h>
#define N 1000000

int main(){
  int A[N] , G[N];
  int num, i, j, k, cnt, m, v;
  
  scanf("%d", &num);
  for(i = 0; i < num; i++){
    scanf("%d", &A[i]);
  }
  cnt = 0;
  m =  pow(num, 1.0/3.4);
  G[m-1] = 1;
  
  for(i = m-2; i >= 0; i--){
    G[i] = G[i+1] * 3 + 1;
  }
  
  for(k = 0; k < m; k++){
    
    for(i = G[k]; i < num; i++){
      v = A[i];
      j = i - G[k];
      while(j >= 0 && A[j] > v){
	A[j+G[k]] = A[j];
	j = j - G[k];
	cnt++;
      }
      A[j+G[k]] = v;
    }
    
  }
  printf("%d\n", m);
  for(i = 0; i < m; i++){
    printf("%d ", G[i]);
  }
  printf("\n%d\n", cnt);
  for(i = 0; i < num; i++){
    printf("%d\n", A[i]);
  }
  return 0;
}

