#CF2137D. 按匹配出现项替换

按匹配出现项替换

给定数组 aa,定义 f(x)f(x) 表示数值 xx 在数组 aa 中的出现次数。 例如:当 a=[1,2,3,1,4]a=[1,2,3,1,4] 时,f(1)=2f(1)=2f(3)=1f(3)=1

现有一个长度为 nn 的数组 bb。 请你判断是否存在一个长度为 nn 的数组 aa,满足: 对所有 1in1\le i\le n,都有 f(ai)=bif(a_i)=b_i

若存在合法数组 aa,请构造出任意一个;若不存在,输出 1-1

输入

多组测试数据。 第一行输入测试组数 tt1t1041\le t\le 10^4)。

每组数据格式: 第一行输入整数 nn1n21051\le n\le 2\cdot 10^5)。 第二行输入 nn 个整数 b1,b2,,bnb_1,b_2,\dots,b_n1bin1\le b_i\le n)。

保证所有测试数据的 nn 总和不超过 21052\cdot 10^5

输出

对每组测试数据:

  • 若无合法数组 aa,输出 1-1
  • 若存在,输出一行 nn 个整数作为数组 aa,要求满足 1ain1\le a_i\le n

样例

输入

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

输出

-1
4 5 5 6 6 6
2 2 2 2 2 2

说明

  1. 第一组测试数据,不存在满足条件的数组 aa
  2. 第二组构造的数组中:数字 44 出现 11 次、数字 55 出现 22 次、数字 66 出现 33 次; 因此 $f(4)=1,\ f(5)=2,\ f(5)=2,\ f(6)=3,\ f(6)=3,\ f(6)=3$,恰好匹配数组 bb
  3. 第三组全部为 66,构造全 22 的数组即可满足条件。