atcoder#ASAPORO2B. Many Swaps Sorting

Many Swaps Sorting

题目描述

すぬけくんは (0,1,2, ...,N1) (0,1,2,\ ...,N-1) を並び替えて得られるような数列 p p を持っています。 p p の (0 0 -indexedでの) i i 番目の数は pi p_i です。

すぬけくんは 1,2,...,N1 1,2,...,N-1 の番号がついた N1 N-1 種類の操作を自由な順番で何度でも行うことができます。 k k 番の操作を行うと以下のソースコードで表されるような処理が実行されます。

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

すぬけくんは操作を 0 0 回以上 105 10^{5} 回以下行って p p を昇順に並び替えたいです。そのような操作手順の一例を示してください。 なお、この問題の制約下で、そのような操作手順が必ず存在することが証明できます。

输入格式

入力は以下の形式で標準入力から与えられる。

N N p0 p_0 p1 p_1 ... ... pN1 p_{N-1}

输出格式

操作回数(これを m m とする)を 1 1 行目に出力せよ。 続く m m 行のうち i i 行目には i i 番目に実行する操作の番号を出力せよ。 m m 105 10^5 以下であり、m m 回の操作後にp p が昇順となっていれば正解となる。

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

提示

制約

  • 2  N  200 2\ \leq\ N\ \leq\ 200
  • 0  pi  N1 0\ \leq\ p_i\ \leq\ N-1
  • p p (0,1,2,...,N1) (0,1,2,...,N-1) を並び替えて得られる

部分点

  • 300 300 点分のデータセットでは N  7 N\ \leq\ 7 が成立する
  • 別の 400 400 点分のデータセットでは N  30 N\ \leq\ 30 が成立する

Sample Explanation 1

- 以下の図に各操作による p p の変化を示します。 ![9f3b51eb1fe742848f407bdeb7b772e1.png](https://atcoder.jp/img/asaporo2/9f3b51eb1fe742848f407bdeb7b772e1.png)