#CF2137D. 按匹配出现项替换
按匹配出现项替换
给定数组 ,定义 表示数值 在数组 中的出现次数。 例如:当 时,,。
现有一个长度为 的数组 。 请你判断是否存在一个长度为 的数组 ,满足: 对所有 ,都有 。
若存在合法数组 ,请构造出任意一个;若不存在,输出 。
输入
多组测试数据。 第一行输入测试组数 ()。
每组数据格式: 第一行输入整数 ()。 第二行输入 个整数 ()。
保证所有测试数据的 总和不超过 。
输出
对每组测试数据:
- 若无合法数组 ,输出 ;
- 若存在,输出一行 个整数作为数组 ,要求满足 。
样例
输入
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
说明
- 第一组测试数据,不存在满足条件的数组 ;
- 第二组构造的数组中:数字 出现 次、数字 出现 次、数字 出现 次; 因此 $f(4)=1,\ f(5)=2,\ f(5)=2,\ f(6)=3,\ f(6)=3,\ f(6)=3$,恰好匹配数组 。
- 第三组全部为 ,构造全 的数组即可满足条件。