I - Swap and Sort Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400

問題文

正整数 K と長さ N の正整数列 A が与えらえます。あなたはこの数列に対して以下の操作を 5\times 10^5 回以下行えます。

  • 整数 i\ (1 \le i \le N-1) を選ぶ。 A_iA_{i+1} を swap したのち、 A_{i+1}K を加算する。

最終的な数列が昇順、すなわち A_1 \le A_2 \le \ldots \le A_N となっているような操作列を一つ見つけてください。なお、この制約下においてこのような操作列が存在することが示せます。

制約

  • 1 \leq N \leq 1000
  • 1 \le K \le 10^9
  • 1 \le A_i \le 10^9
  • 入力は全て整数

入力

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

N K
A_1 A_2 \ldots A_N

出力

操作回数を M (0 \le M \le 5\times 10^5) として、 M+1 行出力せよ。 1 行目には M を出力し、 k + 1\ (1 \le k \le M) 行目には k 回目に選んだ i を出力せよ。


入力例 1

4 1
1 3 1 2

出力例 1

2
2
3

i2,3の順に選んで2回操作を行うことでA=(1,1,2,5)を得ることができます。


入力例 2

8 2
3 1 4 1 5 9 2 6

出力例 2

15
1
2
3
4
5
6
7
2
3
5
6
4
5
3
4