We know that prime numbers are positive integers that have exactly two distinct positive divisors. Similarly, we'll call a positive integer *t* Т-prime, if *t* has exactly three distinct positive divisors.

You are given an array of *n* positive integers. For each of them determine whether it is Т-prime or not.
The first line contains a single positive integer, *n* (1 ≤ *n* ≤ 10<sup class="upper-index">5</sup>), showing how many numbers are in the array. The next line contains *n* space-separated integers *x*<sub class="lower-index">*i*</sub> (1 ≤ *x*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">12</sup>).

Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is advised to use the cin, cout streams or the %I64d specifier.

# Version 20.0
import os, sys, math, itertools
from collections import deque, defaultdict, OrderedDict, Counter
from bisect import bisect, bisect_left, bisect_right, insort
from heapq import heapify, heappush, heappop, nsmallest, nlargest, heapreplace, heappushpop

ii = lambda : int(input())
si = lambda : input()               
mi = lambda : map(int,input().strip().split(" "))
msi = lambda : map(str,input().strip().split(" ")) 
li = lambda : list(mi())
lsi = lambda : list(msi())
out = []
export = lambda : print('\n'.join(map(str, out)), end='')
p = lambda x : out.append(x)
pp = lambda array : p(' '.join(map(str,array)))

offline = True

L = lambda string : hq.L(string) if offline == True else False
LT = lambda tc, custom, string : hq.LT(tc, custom, string) if offline == True else False

def main() -> None:
    # 2023-10-15 23:57:03


    def sieve( n : int) -> list:
        isPrime = [True for i in range(n+1)]
        isPrime[0] = isPrime[1] = False
        for i in range(4,n+1,2): isPrime[i] = False
        for i in range(3,n+1,2):
            if i*i <= n and isPrime[i]:
                for j in range(i*i,n+1,i): isPrime[j] = False
        return [idx for idx,i in enumerate(isPrime) if i==True]


    primes = sieve(int(1e5)+100)


    def primeFactorization(num):
        factors = []
        sqrtn = math.sqrt(num)
        length = len(primes)
        for i in range(length):
            if primes[i] <= sqrtn:
                if num % primes[i] == 0:
                    while num % primes[i] == 0:
                        num //= primes[i]
                        factors.append(primes[i])
                    sqrtn = math.sqrt(num)
            else:
                break
        if num != 1:
            factors.append(num)
        return factors


    num = ii()
    l = li()
    for i in l:
        ans = primeFactorization(i)
        s = list(set(ans))
        if len(s) == 1 and s[0] != i:
            p('YES')
        else:
            p('NO')
        
        



try: exec('from hq import *\nexec(cc)')
except (FileNotFoundError, ModuleNotFoundError): offline >> 1; main(); export()
	 	  	 			 		   	  		  	 			 	