编程题
### 问题描述
小然是一名音乐家,他创作了一首美妙的乐曲。乐曲由一系列的音符组成,每个音符都有它的频率,组成了音乐的旋律。小然用一个数组 $A$ 表示他的乐谱,其中 $A_i$ 表示音符的频率。
然而,有一天他的乐谱不翼而飞,只留下了一个频率数组 $B$,其中 $B_i$ 表示音符 $A_i$ 在乐谱中出现的频率。
小然想要重构他的乐谱,但他希望重构后的乐谱能够尽可能保持旋律的美感。他决定用一个新的数组 $A$ 来表示乐谱,要求:
- 乐谱中的音符频率范围为 $1 \leq A_i \leq 10^5$;
- 新的乐谱的频率数组需要和丢失的乐谱的频率数组完全一致;
- 如果有多种可能的乐谱,小然希望选择字典序最小的那一种。
如果无法重构乐谱,小然会感到沮丧并输出 $-1$。
请你帮助小然寻回他失去的乐谱。
### 输入格式
输入的第一行将包含一个单独的整数 $T$,表示测试用例的数量。
每个测试用例包括两行输入:
- 测试用例的第一行包含一个单独的整数 $N$,表示数组的大小。
- 测试用例的下一行包含 $N$ 个由空格分隔的整数 $B_1, B_2, \ldots, B_N$,表示频率数组。
### 输出格式
对于每个测试用例,输出一行,包含 $N$ 个由空格分隔的整数 $A_1, A_2, \ldots, A_N$,表示字典序最小的乐谱。如果无法重构乐谱,输出 $-1$。
### 样例输入
```text
5
5
2 3 3 3 2
5
1 1 1 1 1
5
5 5 5 5 5
3
1 2 4
8
1 3 2 3 2 2 2 3
```
### 样例输出
```text
1 2 2 2 1
1 2 3 4 5
1 1 1 1 1
-1
1 2 3 2 3 4 4 2
```
### 说明
在第一个测试用例中,字典序最小的乐谱是 $[1,2,2,2,1]$。音符 $1$ 和 $5$ 的频率为 $2$,而音符 $2,3,4$ 的频率为 $3$。
在第二个测试用例中,字典序最小的乐谱是 $[1,2,3,4,5]$。小然的乐谱中每个音符的频率都是 $1$。
在第三个测试用例中,字典序最小的乐谱是 $[1,1,1,1,1]$。小然的乐谱中每个音符的频率都是 $5$。
在第四个测试用例中,无法重构乐谱。
在第五个测试用例中,字典序最小的乐谱是 $[1,2,3,2,3,4,4,2]$。
### 评测数据范围
$1 \leq T \leq 10^3$。
$1 \leq N \leq 10^5$。
$1 \leq B_i \leq 10^5$。
所有测试用例中的 $N$ 的总和不超过 $10^5$。