#P1018. 故障机器人
故障机器人
故障机器人
题目描述
在充满危险的尖塔深处,你扮演一位名为"故障机器人"的角色。你的目标是悄无声息地穿过一群沉睡的"守卫",到达下一层。
每当你挑战一个房间时,房间里的守卫会被惊醒。这些守卫有不同的"警觉度"。你需要通过"分心"能力来降低警觉度。
规则:
- 你可以按任意顺序挑战 个房间,每个房间有警觉度 。
- 挑战房间后,将 加入当前的总警觉度。
- 在挑战下一个房间之前,你使用"分心"能力,总警觉度变为 。
- 失败条件:如果任何一次"分心"操作后总警觉度恰好等于1,警报被触发,挑战失败。
- 所有房间的警觉度总和是4的倍数。
你需要确认:是否存在一种挑战顺序,使得你在每次降低警觉度后都不会得到1?如果存在,输出该顺序;否则输出 。
形式化的,给定 个整数 ,表示每个房间的警觉度。你需要确定是否存在一种排列 ,使得对于每个 (),前 项之和对 取模都不等于 。 如果存在这样的排列,输出任意一种;否则输出 。
输入格式
本题有多组数据。第一行一个整数 ,表示数据组数。
对于每组数据:
- 第一行一个整数 表示房间数。
- 接下来一行
n个整数 表示每个房间的警觉度。 - 保证 是 4 的倍数,保证 组数据中
n的和不超过 。
输出格式
对于每组数据,如果不存在安全的顺序,输出 -1。
否则,输出一个排列 p_1, p_2, ..., p_n,表示挑战房间的顺序(p_i 是房间的原始编号)。如果有多种答案,输出任意一种即可。
样例 1
3
4
4 6 3 3
4
1 3 3 1
4
1 1 1 1
3 1 4 2
2 3 4 1
-1
提示
玩鸡煲玩的。
