青山隐隐,败叶萧萧
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

远山起伏,黑魆魆地时隐时显;枯叶在秋风中飘落翻转。小c 不愿意看到校园里此番凄凉景象,决定动用他的魔法,让校园与身后的青山在秋季一样焕发生机!

我们把问题具象化:小c 面前的 n 堆败叶堆排成一排,每一堆败叶堆有 a_i 片败叶。如果小c 能够使得面前这一排败叶同时满足以下两个条件,那么小c 就可以发动魔法让这片青山,让这座校园焕发生机!

条件①:对任意 是一个质数;条件②:对任意 a_i 是一个质数。

小c 可以对任意多堆的败叶堆,做任意多次任意操作 (也可以为 0 ):

操作①:令 ;操作 ②:令 当然,你不可以令任何一堆败叶堆里败叶的数量为负数

请问小c 能否让青山和校园焕发生机?

输入描述:

第一行输入一个正整数 t  表示测试数据组数。

每组测试数据第一行输入一个正整数 n 表示败叶堆的堆数。

第二行输入 n 个非负整数 a_i ,表示第 i 堆败叶堆里的败叶片数。

输出描述:

对于每组测试数据,如果可以让青山和校园焕发生机,一行输出一个字符串 "YES" ,否则输出一行一个字符串 "NO" 。(输出不包含引号)
示例1

输入

复制
7
1
0
1
9
2
5 2
2
11 17
3
99 1314520 99999
4
1919 810 114514 314159
6
3 14159 26535 89793 23846 26433

输出

复制
YES
YES
YES
NO
YES
NO
NO

说明

对于第一组测试用例,可以对第 1 堆败叶堆使用 1 次操作①,则序列变为 \{ 2\} ,满足条件。

对于第二组测试用例,可以对第 1 堆败叶堆使用 1 次操作②,则序列变为 \{ 7 \} ,满足条件。

对于第三组测试用例,不需要操作,序列满足条件。

对于第四组测试用例,可以证明,永远无法同时满足两个要求。

对于第五组测试用例,可以对第 1 堆败叶使用 4450 次操作①,再对第 2 堆败叶堆使用 657259 次操作②,最后对第 3 堆败叶使用 608596 次操作①,则序列变为 \{8999,2,1317191\}

第六、七组样例不再过多阐释。

当然,可能的操作方法不唯一,最后变成的序列也不唯一。