考虑一个有 $n$ 名玩家和 $n$ 把椅子的游戏。椅子围成一个圆圈摆放,每名玩家坐在其中一把椅子上。游戏中还有一个铃铛,会响若干次。
每把椅子上都有一个 $1$ 到 $n$ 之间的整数:表示坐在该椅子上的玩家在铃铛响时必须顺时针移动的步数。如果铃铛响后每把椅子上恰好有一名玩家,则称该椅子排列是合法的。
你的任务是找到一种合法的椅子排列,或者指出不存在这样的排列。
输入格式
第一行包含一个整数 $t$:测试用例的数量。
此后,每个测试用例包含两行。第一行包含一个整数 $n$。第二行包含整数 $s_1, s_2, \dots, s_n$:椅子上的数字。
输出格式
对于每个测试用例,如果存在合法的椅子排列,首先输出 YES,否则输出 NO。如果答案为 YES,则顺时针输出一种可能的排列。如果存在多种合法的排列,输出其中任意一种即可。
数据范围
- $1 \le t \le 1000$
- $1 \le n \le 100$
- $1 \le s_i \le n$ 对于 $i=1, 2, \dots, n$
样例
输入 1
3 4 1 1 1 1 4 1 1 1 2 5 4 1 2 1 2
输出 1
YES 1 1 1 1 NO YES 2 4 1 1 2
子任务
子任务 1 (8 分)
- $1 \le n \le 8$
子任务 2 (5 分)
- 若 $i \neq j$,则 $s_i \neq s_j$(即每个值各不相同)
子任务 3 (4 分)
- $1 \le s_i \le 2$ 对于 $i=1, 2, \dots, n$
子任务 4 (7 分)
- $1 \le s_i \le 3$ 对于 $i=1, 2, \dots, n$
子任务 5 (12 分)
- $1 \le s_i \le 4$ 对于 $i=1, 2, \dots, n$
子任务 6 (15 分)
- $1 \le s_i \le 5$ 对于 $i=1, 2, \dots, n$
子任务 7 (20 分)
- $1 \le n \le 16$
子任务 8 (29 分)
- 无附加限制。