Shell Sort is a generalization of [Insertion Sort](http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_1_A) to arrange a list of $n$ elements $A$.                 1  insertionSort(A, n, g) 2      for i = g to n-1 3          v = A[i] 4          j = i - g 5          while j >= 0 && A[j] > v 6              A[j+g] = A[j] 7              j = j - g 8              cnt++ 9          A[j+g] = v 10 11 shellSort(A, n) 12     cnt = 0 13     m = ? 14     G[] = {?, ?,..., ?} 15     for i = 0 to m-1 16         insertionSort(A, n, G[i])   A function shellSort(A, n) performs a function insertionSort(A, n, g), which considers every $g$-th elements. Beginning with large values of $g$, it repeats the insertion sort with smaller $g$.  Your task is to complete the above program by filling ?. Write a program which reads an integer $n$ and a sequence $A$, and prints $m$, $G_i (i = 0, 1, ..., m − 1)$ in the pseudo code and the sequence $A$ in ascending order. The output of your program must meet the following requirements:    * $1 \leq m \leq 100$   * $0 \leq G_i \leq n$   * cnt does not exceed $\lceil n^{1.5}\rceil$
def solution(count,nums,g,oppai):
    for i in range(g,count):
        objNum = nums[i]
        j = i - g
        while j >= 0 and nums[j] > objNum:
            nums[j+g] = nums[j]
            j -= g
            oppai.append(1)
        nums[j+g] = objNum

def shellSort(nums,count):
    oppai = []
    G = []
    G.append(max(nums)-2)
    G.append(max(nums)//2)
    G.append(1)
    print(len(G))
    print(' '.join(map(str,G)))
    for i in range(len(G)):
        solution(count,nums,G[i],oppai)
    print(len(oppai))
    for ele in nums:
        print(ele)

n = int(input())
nums = []
for _ in range(n):
    nums.append(int(input()))
shellSort(nums,n)


import math

def solution(count,nums,g,oppai):
    for i in range(g,count):
        objNum = nums[i]
        j = i - g
        while j >= 0 and nums[j] > objNum:
            nums[j+g] = nums[j]
            j -= g
            oppai.append(1)
        nums[j+g] = objNum

def shellSort(nums,count):
    oppai = []
    b = 701
    G = [x for x in [1,4,10,23,57,132,301,701] if x <= count]
    while True:
        b = math.floor(2.25*b)
        if b > n:
            break
        G.append(b)
    G = G[::-1]
    print(len(G))
    print(' '.join(map(str,G)))
    for i in range(len(G)):
        solution(count,nums,G[i],oppai)
    print(len(oppai))
    for ele in nums:
        print(ele)

n = int(input())
nums = []


for _ in range(n):
    nums.append(int(input()))
shellSort(nums,n)

