atcoder#ASAPORO2B. Many Swaps Sorting

Many Swaps Sorting

Score : 900900 points

Problem Statement

Snuke has a sequence pp, which is a permutation of (0,1,2,...,N1)(0,1,2, ...,N-1). The ii-th element (00-indexed) in pp is pip_i.

He can perform N1N-1 kinds of operations labeled 1,2,...,N11,2,...,N-1 any number of times in any order. When the operation labeled kk is executed, the procedure represented by the following code will be performed:

for(int i=k;i<N;i++)
    swap(p[i],p[i-k]);

He would like to sort pp in increasing order using between 00 and 10510^{5} operations (inclusive). Show one such sequence of operations. It can be proved that there always exists such a sequence of operations under the constraints in this problem.

Constraints

  • 2N2002 \leq N \leq 200
  • 0piN10 \leq p_i \leq N-1
  • pp is a permutation of (0,1,2,...,N1)(0,1,2,...,N-1).

Partial Scores

  • In the test set worth 300300 points, N7N \leq 7.
  • In the test set worth another 400400 points, N30N \leq 30.

Input

Input is given from Standard Input in the following format:

NN

p0p_0 p1p_1 ...... pN1p_{N-1}

Output

Let mm be the number of operations in your solution. In the first line, print mm. In the ii-th of the following mm lines, print the label of the ii-th executed operation. The solution will be accepted if mm is at most 10510^5 and pp is in increasing order after the execution of the mm operations.

5
4 2 0 1 3
4
2
3
1
2
  • Each operation changes pp as shown below:

9f3b51eb1fe742848f407bdeb7b772e1.png

9
1 0 4 3 5 6 2 8 7
11
3
6
1
3
5
2
4
7
8
6
3