# # 高速素数判定 # import random # def Miller_Rabin_fast(n, k): # if n==2: return "prime" # if n%2==0: return "composite" # s, d=0, n-1 # while d%2==0: # s, d=s+1, d//2 # if n<4759123141: # test=(2,7,61) # for a in test: # if a>n-1: continue # check=[] # check.append(pow(a, d, n)==1) # for r in range(s): # check.append(pow(a, pow(2, r)*d, n)==n-1) # if True in check: # continue # else: # return "composite" # return "prime" # elif n<=pow(2, 64): # test=(2,325,9375,28178,450775,9780504,1795265022) # for a in test: # if a>n-1: continue # check=[] # check.append(pow(a, d, n)==1) # for r in range(s): # check.append(pow(a, pow(2, r)*d, n)==n-1) # if True in check: # continue # else: # return "composite" # return "prime" # else: # for _ in range(k): # a=random.randint(1, n-1) # check=[] # check.append(pow(a, d, n)==1) # for r in range(s): # check.append(pow(a, pow(2, r)*d, n)==n-1) # if True in check: # continue # else: # return "composite" # return "probably_prime" import random def is_prime(n): if n == 2: return True if n == 1 or n & 1 == 0: return False d = (n - 1) >> 1 while d & 1 == 0: d >>= 1 for k in range(8): a = random.randint(1, n - 1) t = d y = pow(a, t, n) while t != n - 1 and y != 1 and y != n - 1: y = (y * y) % n t <<= 1 if y != n - 1 and t & 1 == 0: return False return True _10=[10**i for i in range(43)] def ord_10(n): ok = 0 ng = 42 while abs(ok-ng)>1: mid=(ok+ng)//2 if n%_10[mid]==0: ok=mid else: ng=mid return ok T=int(input()) for _ in range(T): N=int(input()) if is_prime(N*N*N*N+4): print("Yes") print(0) else: print("No") print(ord_10(N*N*N*N+4))