只留专一数
题号:NC312259
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}Zaoly 给了你一个长度为 n 的正整数数列 a 和一个正整数 n'。初始时,n' = na = [a_1, a_2, \dots, a_n]。你需要对数列 a 不断进行变换,每次变换需按顺序进行以下步骤,直到 n' = 1 为止:
\hspace{23pt}\bullet\,第一步,选择两个整数 ij1 \le i, j \le n'i \ne j);
\hspace{23pt}\bullet\,第二步,令 a_i : \hspace{-0.5pt} = a_i^{a_j}a_i 的值变为 a_ia_j 次方);
\hspace{23pt}\bullet\,第三步,令 a_j : \hspace{-0.5pt} = a_{n'}
\hspace{23pt}\bullet\,第四步,令 n' : \hspace{-0.5pt} = n' - 1
\hspace{15pt}请你告诉 Zaoly,是否存在一种变换方法,使得在所有变换完成后,a_1 是专一数?
\hspace{15pt}一个正整数,如果其不同质因数^\texttt{[1]}的个数不超过 1 个,则这个数是专一数;否则,这个数不是专一数。例如,13125 是专一数,但 630900 不是专一数。

【名词解释】
\hspace{15pt}质因数^\texttt{[1]}:也称质因子。对于正整数 x,如果存在质数^\texttt{[2]} p 使得 x 能被 p 整除,则称 px 的质因子。例如,12 的质因子有 23
\hspace{15pt}质数^\texttt{[2]}:一个大于 1 的正整数,如果除了 1 和它自身以外不再有其他因数,那么这个数被称作质数。特殊地,1 既不是质数也不是合数。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T1 \le T \le 2 \cdot 10^4)代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入一个整数 n1 \le n \le 2 \cdot 10^5),表示数列的长度。
\hspace{15pt}第二行输入用空格隔开的 n 个整数 a_1, a_2, \dots, a_n1 \le a_i \le 10^3),表示数列的元素。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2 \cdot 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行。如果存在这样的变换方法,输出 “YES”(不含引号);否则输出 “NO”(不含引号)。

\hspace{15pt}你可以输出 “YES” 或 “NO” 的任意大小写形式。例如,字符串 “yEs”、“yes”、“Yes”、“YES” 都视为肯定回答。
示例1

输入

复制
2
2
8 15
1
6

输出

复制
YES
NO

说明

\hspace{15pt}对于第一组测试数据,进行一次变换,选择 i = 1j = 2,则 a_1 = 8^{15} = 2^{45} 只有 1 个质因数 2,是专一数。

\hspace{15pt}对于第二组测试数据,a_1 = 62 个质因数 23,不是专一数。