#P15075. [ICPC 2024 Chengdu R] Closest Derangement

[ICPC 2024 Chengdu R] Closest Derangement

说明

Blackbird 有一个长度为 nn 的排列 pp,他想找到 pp 的一个错位排列 qq,即 qq 是另一个长度为 nn 的排列,且对于 i=1,2,,ni=1,2,\ldots,n,都有 qipiq_i\neq p_i。与此同时,他希望 i=1npiqi\sum_{i=1}^{n}|p_i-q_i| 取到最小值。满足上述条件的排列 qq,称为 pp 的最近错位排列。

pp 的最近错位排列可能有多个,你需要输出字典序第 kk 小的最近错位排列。如果 pp 的最近错位排列少于 kk 个,则输出 1-1

一个长度为 nn 的排列,是指一个长度为 nn 的序列,满足所有元素互不相同且均为从 11nn 的正整数。排列可以按字典序排序。设 aabb 是两个长度为 nn 的不同的排列。那么,a<ba < b 当且仅当对于满足 aibia_i \neq b_i 的最小下标 ii,有 ai<bia_i < b_i

输入格式

第一行包含一个整数 TT1T1041\le T\le 10^4),表示测试数据组数。

对于每组数据,第一行包含两个正整数 nn2n21052\le n \le 2 \cdot 10^5)和 kk1k1091\le k \le 10^9)。第二行包含 nn 个正整数 p1,p2,,pnp_1, p_2, \ldots, p_n 。保证 pp 是一个排列。

保证每组数据中 nn 之和不超过 10610^6

输出格式

对于每组数据,如果最近错位排列的数量不少于 kk,则输出 nn 个正整数 q1,q2,,qnq_1, q_2, \ldots, q_n ,表示 pp 的字典序第 kk 小的最近错位排列。否则输出 1-1

2
2 2
2 1
3 2
1 2 3
-1
3 1 2

提示

第一个测试用例中,[1,2][1,2] 是唯一的最近错位排列,所以输出 1-1

第二个测试用例中,[2,3,1][2,3,1][3,1,2][3,1,2]pp 的最近错位排列,且 [3,1,2][3,1,2] 的字典序大于 [2,3,1][2,3,1]