BaoBao 在他的左口袋里发现了一个包含 $n$ 个整数的数组 $A = \{a_1, a_2, \dots, a_n\}$。由于感到无聊,他决定将其重新排列为另一个包含 $n$ 个整数的数组 $B = \{b_1, b_2, \dots, b_n\}$,使得 $B$ 是 $A$ 的一个排列,且对于所有 $1 \le i \le n$ 均满足 $a_i \neq b_i$。请帮助 BaoBao 完成这个重排。
如果存在多个合法的重排,请找出其中字典序最小的一个。
对于两个数组 $C = \{c_1, c_2, \dots, c_n\}$ 和 $D = \{d_1, d_2, \dots, d_n\}$,如果存在一个整数 $k$ 满足 $1 \le k \le n$,使得对于所有 $1 \le i < k$ 都有 $c_i = d_i$,且 $c_k < d_k$,则称 $C$ 小于 $D$。
输入格式
输入包含多组测试数据。第一行包含一个整数 $T$,表示测试数据的组数。对于每组测试数据:
第一行包含一个整数 $n$ ($1 \le n \le 10^5$),表示数组的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le n$),表示给定的数组。
输出格式
对于每组测试数据,输出一行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$,用空格分隔,表示答案。如果存在多个合法的答案,输出字典序最小的一个。如果不存在合法的答案,则输出 “Impossible”(不含引号)。
请注意,不要在每行末尾输出多余的空格,否则你的答案可能会被判定为错误!
样例
样例输入 1
3 4 4 1 3 2 4 1 1 2 3 3 1 1 1
样例输出 1
1 2 4 3 2 3 1 1 Impossible