#CF3797. 排列还原

排列还原

题目描述

一个包含从 11nn 的所有数字且仅出现一次的序列被称为排列。例如,序列 [3,1,4,2][3,1,4,2][1][1][2,1][2,1] 是排列,但 [1,2,1][1,2,1][0,1][0,1][1,3,4][1,3,4] 不是。

对于一个偶数长度为 nn 的排列 pp,你可以构造一个长度为 n2\frac n2 的数组 bb,使得:

  • bi=max(p2i1,p2i)b_i=max(p_{2i−1},p_{2i})

其中 1in21≤i≤n^2

例如,如果 p=[2,4,3,1,5,6]p = [2,4,3,1,5,6],那么:

  • b1=max(p1,p2)=max(2,4)=4b_1=max(p_1,p_2)=max(2,4)=4
  • b2=max(p3,p4)=max(3,1)=3b_2=max(p_3,p_4)=max(3,1)=3
  • b3=max(p5,p6)=max(5,6)=6b_3=max(p_5,p_6)=max(5,6)=6

因此,我们得到了数组 b=[4,3,6]b = [4,3,6]

给定数组 bb,找到字典序最小的排列 pp,使得可以从 pp 构造出给定的数组 bb

如果 b=[4,3,6]b = [4,3,6],那么可以从排列 p=[1,4,2,3,5,6]p = [1,4,2,3,5,6] 构造出它,因为:

  • b1=max(p1,p2)=max(1,4)=4b_1=max(p_1,p_2)=max(1,4)=4
  • b2=max(p3,p4)=max(2,3)=3b_2=max(p_3,p_4)=max(2,3)=3
  • b3=max(p5,p6)=max(5,6)=6b_3=max(p_5,p_6)=max(5,6)=6

排列 x1,x2,,xnx_1,x_2,…,x_n 在字典序上小于排列 y1,y2,,yny_1,y_2,…,y_n 当且仅当存在 i(1in)i(1≤i≤n) 使得 x1=y1,x2=y2,,xi1=yi1x_1=y_1,x_2=y_2,…,x_{i−1}=y_{i−1}xi<yix_i<y_i

输入格式

第一行一个整数 t(1t104)t (1≤t≤10^4) ,表示数据组数。

对于每组数据:

第一行一个偶数 n(2n2105)n(2≤n≤2⋅10^5),表示排列 pp 的长度。

第二行 n2\frac n2 个整数 bi(1bin)b_i (1≤b_i≤n) ,表示数组 bb 的元素。

保证所有测试用例中的 nn 总和不超过 21052⋅10^5

输出格式

对于每组数据,请在单独的一行上输出:

  • 字典序最小的排列 pp,使得可以通过 pp 构造出数组 bb
  • 或者输出 -1,表示不存在满足条件的排列 pp

测试样例

6
6
4 3 6
4
2 4
8
8 7 2 3
6
6 4 2
4
4 4
8
8 7 4 5
1 4 2 3 5 6 
1 2 3 4 
-1
5 6 3 4 1 2 
-1
1 8 6 7 2 4 3 5

样例说明

第一个测试用例已经在问题陈述中给出。