203.小苯的GCD

内存限制:256 MB 时间限制:1.000 S

题目描述

小苯有一个长度为n 的数组a。

他想要使得所有ai最大公因子是一个素数。即gcd(a1,a2...an) 是一个素数。他可以对数组进行任意次操作。

具体的:每次操作,他会选择i, j两个下标,同时执行:

ai = ai+2, aj=aj-2

请问他是否有可能在任意次操作内将数组变成符合要求的,如果可以,请输出所有可能的最大公因数。

注意,这里要保证aj 在操作后仍然是正数,即不能选择 aj<=2。

输入

输入包含两行。

第一行一个正整数n (2 <=  n  <=  2*10^5) 表示数组长度。第二行n个正整数 ai (1 <= a<= 10^6) 表示这个数组。

输出

输入包含一行或两行。

如果可以输出 YES,否则输出 NO。

如果答案为YES,则第二行按照升序输出所有可行的数组gcd。如为NO, 则没有第二行

样例输入 复制

4
1 3 5 9

样例输出 复制

YES
3

提示

可以选择一次 i=1, j=3,这样一来数组变成:[3, 3, 3, 9],gcd=3。

可以证明只有3 这一个答案。

时间限制: c/c++/go: 1s; 其他语言: 5s.