#CF2130B. 无路径

无路径

B. 无路径

  • 每个测试的时间限制:1 秒
  • 内存限制:256 MB

有一个数组 a1,a2,,ana_1, a_2, \dots, a_n,其中的值只可能是 001122,还有一个整数 ss。保证 a1,a2,,ana_1, a_2, \dots, a_n 中至少包含一个 00、一个 11 和一个 22

Alice 希望从下标 11 出发,每次可以向右或向左移动一步(步长为 11),最终到达下标 nn。在移动过程中,她会计算她访问过的所有位置上的数值之和,并且希望这个和恰好等于 ss

形式化地说,Alice 希望找到一个下标序列 [i1,i2,,im][i_1, i_2, \dots, i_m],满足:

  • i1=1i_1 = 1im=ni_m = n
  • 对所有 1jm1 \le j \le m1ijn1 \le i_j \le n
  • 对所有 1j<m1 \le j < mijij+1=1|i_j - i_{j+1}| = 1(即相邻两步必须移动到相邻的下标)。
  • ai1+ai2++aim=sa_{i_1} + a_{i_2} + \dots + a_{i_m} = s

然而,Bob 想要重新排列 a1,a2,,ana_1, a_2, \dots, a_n,从而阻止 Alice 达成她的目标。判断是否有可能通过重新排列 aa,使得 Alice 无法找到满足条件的序列(即使 Alice 足够聪明)。如果可能,还需要输出重新排列后的数组 a1,a2,,ana_1, a_2, \dots, a_n


输入格式

每个测试点包含多个测试用例。第一行包含测试用例数 tt1t1031 \le t \le 10^3)。

每个测试用例的第一行包含两个整数 nnss3n503 \le n \le 500s10000 \le s \le 1000)。

每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n0ai20 \le a_i \le 2)。

保证 aa 中至少包含一个 00、一个 11 和一个 22


输出格式

对于每个测试用例,如果可以通过重新排列 aa 使得 Alice 无法找到目标序列,则输出 nn 个整数 —— 这样的一种重新排列。否则输出 1-1


输入输出样例

样例输入

6
3 2
0 1 2
3 3
0 1 2
3 6
0 1 2
3 4
0 1 2
3 10
0 1 2
5 1000
2 0 1 1 2

样例输出

0 1 2
-1
-1
0 2 1 
-1
-1

样例解释

  • 第一个测试用例aa 的任何一种重新排列都可以阻止 Alice 达成目标。
  • 第二个测试用例:无论怎样重新排列 aa,Alice 总能找到序列 [1,2,3][1, 2, 3] 作为她的目标序列。
  • 第三个测试用例:没有任何一种 aa 的重新排列可以阻止 Alice 达成目标。例如,对于 a=[0,2,1]a = [0, 2, 1],Alice 可以找到序列 [1,2,3,2,3][1, 2, 3, 2, 3] 作为她的目标序列。