#CF2107A. LRC 与 VIP

LRC 与 VIP

每次测试时间限制:1 秒
每次测试内存限制:256 兆字节


题目描述

你有一个大小为 nn 的数组 aa,即 a1,a2,,ana_1, a_2, \dots, a_n

需要将 nn 个元素划分成两个序列 BBCC,满足以下条件:

  • 每个元素恰好属于一个序列。
  • 两个序列 BBCC 都至少包含一个元素。
  • $\gcd(B_1, B_2, \dots, B_{|B|}) \neq \gcd(C_1, C_2, \dots, C_{|C|})$。

这里 gcd(x,y)\gcd(x, y) 表示整数 xxyy 的最大公约数。


输入格式

每个测试包含多个测试用例。
第一行包含一个整数 tt1t5001 \leq t \leq 500),表示测试用例数量。
接下来每个测试用例的格式如下:

  • 第一行包含一个整数 nn2n1002 \leq n \leq 100)。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1041 \leq a_i \leq 10^4)。

输出格式

对于每个测试用例:

  • 第一行输出 Yes 如果存在解,否则输出 No。大小写不敏感,例如 YESyEs 也可接受。
  • 仅当存在解时,再在第二行输出 nn 个整数,第 ii 个数为 1122
    11 表示该元素属于序列 BB22 表示属于序列 CC
    必须保证 1122 都至少出现一次。

示例

输入

3
4
1 20 51 9
4
5 5 5 5
3
1 2 2

输出

Yes
2 2 1 1
No
Yes
1 2 2

样例解释

在第一个测试用例中:
B=[51,9]B = [51, 9]C=[1,20]C = [1, 20]。可以验证 gcd(B1,B2)=31=gcd(C1,C2)\gcd(B_1, B_2) = 3 \neq 1 = \gcd(C_1, C_2)

在第二个测试用例中,不存在解。例如,若将前 33 个元素分给 BB,最后一个给 CC,则 B=[5,5,5]B = [5,5,5]C=[5]C = [5]gcd(B)=5=gcd(C)\gcd(B) = 5 = \gcd(C),不符合要求。

在第三个测试用例中,存在解。