#include<stdio.h>

int cnt;
int m=2;
int G[2] = {4,1};

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

void shellSort(int A[],int N){
	int i,v;
	cnt=0;
	for(i=0; i<m; i++){
		insertionSort(A,N,G[i]);
	}
}

int main(){
	int N;
	int i,A[100];
	
	scanf("%d",&N);
	
	for(i=0; i<N; i++){
		scanf("%d",&A[i]);
	}
	
	shellSort(A,N);
	
	printf("%d\n",m);
	for(i=0; i<m; i++){
		printf("%d ",G[i]);
	}
	printf("\n");
	
	printf("%d\n",cnt);
	
	for(i=0; i<N; i++){
		printf("%d\n",A[i]);
	}
	
	return 0;
}