P0025

序列重排(arrange)

序列重排(arrange)

给定一个长度为 nn 的正整数序列 a1,a2,…,ana_1,a_2,\ldots,a_n。

定义一次操作为:

  • 选择当前序列中的一个位置 ii,保持第 ii 个数不动,将它左侧的所有数整体翻转,同时将它右侧的所有数整体翻转。

也就是说,若当前序列为:

a1,a2,…,ai−1,ai,ai+1,…,ana_1,a_2,\ldots,a_{i-1},a_i,a_{i+1},\ldots,a_n

则选择位置 ii 进行一次操作后,序列会变为:

ai−1,ai−2,…,a1,ai,an,an−1,…,ai+1a_{i-1},a_{i-2},\ldots,a_1,a_i,a_n,a_{n-1},\ldots,a_{i+1}

你需要在不超过 200001200001 次操作内,使序列 aa 单调不降,或报告无法完成。

样例 1 输入

2
6
1 4 3 5 3 2
6
6 5 4 3 2 1

样例 1 输出

5
5 3 6 2 4
-1

样例 1 解释

对于第一组测试数据,初始序列为:

[1,4,3,5,3,2][1,4,3,5,3,2]

依次选择位置:

5,3,6,2,45,3,6,2,4

可以将序列变为:

[1,2,3,3,4,5][1,2,3,3,4,5]

因此这是一组合法输出。

对于第二组测试数据,可以证明不存在合法方案,因此输出 −1-1。

样例 2

见附加文件中的 arrange2.in 和 arrange2.ans。

该样例满足测试点 33 的限制。

样例 3

见附加文件中的 arrange3.in 和 arrange3.ans。

该样例满足测试点 55 的限制。

样例 4

见附加文件中的 arrange4.in 和 arrange4.ans。

该样例满足测试点 1515 的限制。

样例 5

见附加文件中的 arrange5.in 和 arrange5.ans。

该样例满足测试点 2020 的限制。

输入格式

本题有多组测试数据。

第一行包含一个正整数 TT,表示测试数据组数。

对于每组测试数据:

  • 第一行包含一个正整数 nn。
  • 第二行包含 nn 个正整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

输出格式

对于每组测试数据,输出一行或两行。

若不可能在 200001200001 次操作内完成排序,输出一行一个整数 −1-1。

否则:

  • 第一行输出一个非负整数 kk,表示操作次数。
  • 第二行输出 kk 个正整数,表示每次操作选择的位置。

若有多种合法方案,输出任意一种即可。

提示

对于所有测试数据,保证:

  • 1≤T≤51\le T\le 5;
  • 1≤n≤1051\le n\le 10^5;
  • 1≤ai≤n1\le a_i\le n。
测试点编号n≤n\leq
1,21,288
3,43,41616
5,65,68080
7,87,8300300
9,109,10400400
11,1211,1220002000
13,1413,142500025000
15,1615,165000050000
17,1817,187500075000
19,2019,2010510^5

下发大样例