#include <bits/stdc++.h>
using namespace std;
 
int main(){
  int n,cnt=0;
  cin>> n;
  vector<int> a(n);
  vector<int> G(0);
  int r=1;
  while(r<=n){
    G.push_back(r);
    r*=2;
  }
  reverse(G.begin(),G.end());
  int m=G.size();
  for(int i=0;i<n;i++){
    cin >> a[i];
  }
  for(int i=0;i<m;i++){
    int g=G[i];
    for(int j=g;j<n;j++){
      int v=a[j];
      int k=j-g;
      while(k>=0&&a[k]>v){
        a[k+g]=a[k];
        k-=g;
        cnt++;
      }
      a[k+g]=v;
    }
  }
  cout<<m<<endl;
  for(int i=0;i<m;i++){
    cout<<G[i];
    if(i!=m-1)cout<<' ';
  }
  cout << endl<< cnt<<endl;
  for(int i=0;i<n;i++){
    cout<<a[i]<<endl;
  }
  return 0;
}
      
