306448: CF1198F. GCD Groups 2

Memory Limit:256 MB Time Limit:0 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

GCD Groups 2

题意翻译

将 $n$ 个数分为两组,使每组的 $\gcd=1$。输出分组方案或无解信息。

题目描述

You are given an array of $ n $ integers. You need to split all integers into two groups so that the GCD of all integers in the first group is equal to one and the GCD of all integers in the second group is equal to one. The GCD of a group of integers is the largest non-negative integer that divides all the integers in the group. Both groups have to be non-empty.

输入输出格式

输入格式


The first line contains a single integer $ n $ ( $ 2 \leq n \leq 10^5 $ ). The second line contains $ n $ integers $ a_1 $ , $ a_2 $ , $ \ldots $ , $ a_n $ ( $ 1 \leq a_i \leq 10^9 $ ) — the elements of the array.

输出格式


In the first line print "YES" (without quotes), if it is possible to split the integers into two groups as required, and "NO" (without quotes) otherwise. If it is possible to split the integers, in the second line print $ n $ integers, where the $ i $ -th integer is equal to $ 1 $ if the integer $ a_i $ should be in the first group, and $ 2 $ otherwise. If there are multiple solutions, print any.

输入输出样例

输入样例 #1

4
2 3 6 7

输出样例 #1

YES
2 2 1 1 

输入样例 #2

5
6 15 35 77 22

输出样例 #2

YES
2 1 2 1 1 

输入样例 #3

5
6 10 15 1000 75

输出样例 #3

NO

Input

题意翻译

将 $n$ 个数分为两组,使每组的 $\gcd=1$。输出分组方案或无解信息。

加入题单

算法标签: