#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
int power(int a, int d, int n){
int res = 1;
a %= n;
while(d > 0){
if(d % 2 == 1)res = (res * a) % n;
a = (a * a)% n;
d /= 2;
}
return res;
}
bool millerRabin(int n, int a){
if(n % a == 0 && n != a)return false;
int d = n - 1;
while(d % 2 == 0)d /= 2;
int x = power(a,d,n);
if(x == 1 || x == n - 1)return true;
while(d != n - 1){
x = (x * x) % n;
d *= 2;
if(x == 1)return false;
if(x == n - 1)return true;
}
return false;
}
bool isprime(int n){
if(n < 2)return false;
if(n < 4)return true;
if(n % 2 == 0)return false;
int test[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37};
for (int i = 0; i < 12; i++) {
if (test[i] >= n) break;
if (!millerRabin(n, test[i])) return false;
}
return true;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int t; cin >> t;//max = 500
while(t--){
int n; cin >> n;
if(isprime(n)){
cout << "YES" << endl;
}
else cout << "NO" << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAiXG4iCgppbnQgcG93ZXIoaW50IGEsIGludCBkLCBpbnQgbil7CglpbnQgcmVzID0gMTsKCWEgJT0gbjsKCXdoaWxlKGQgPiAwKXsKCQlpZihkICUgMiA9PSAxKXJlcyA9IChyZXMgKiBhKSAlIG47CgkJYSA9IChhICogYSklIG47CgkJZCAvPSAyOwoJfQoJcmV0dXJuIHJlczsKfQoKYm9vbCBtaWxsZXJSYWJpbihpbnQgbiwgaW50IGEpewoJaWYobiAlIGEgPT0gMCAmJiBuICE9IGEpcmV0dXJuIGZhbHNlOwoJaW50IGQgPSBuIC0gMTsKCXdoaWxlKGQgJSAyID09IDApZCAvPSAyOwoJaW50IHggPSBwb3dlcihhLGQsbik7CglpZih4ID09IDEgfHwgeCA9PSBuIC0gMSlyZXR1cm4gdHJ1ZTsKCXdoaWxlKGQgIT0gbiAtIDEpewoJCXggPSAoeCAqIHgpICUgbjsKCQlkICo9IDI7CgkJaWYoeCA9PSAxKXJldHVybiBmYWxzZTsKCQlpZih4ID09IG4gLSAxKXJldHVybiB0cnVlOwoJfQoJcmV0dXJuIGZhbHNlOwp9CiAKYm9vbCBpc3ByaW1lKGludCBuKXsKCWlmKG4gPCAyKXJldHVybiBmYWxzZTsKCWlmKG4gPCA0KXJldHVybiB0cnVlOwoJaWYobiAlIDIgPT0gMClyZXR1cm4gZmFsc2U7CglpbnQgdGVzdFtdID0gezIsIDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxLCAzN307CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDEyOyBpKyspIHsKICAgICAgICBpZiAodGVzdFtpXSA+PSBuKSBicmVhazsKICAgICAgICBpZiAoIW1pbGxlclJhYmluKG4sIHRlc3RbaV0pKSByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQogCnNpZ25lZCBtYWluKCl7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGludCB0OyBjaW4gPj4gdDsvL21heCA9IDUwMCAKICAgIHdoaWxlKHQtLSl7CiAgICAJaW50IG47IGNpbiA+PiBuOwogICAgCWlmKGlzcHJpbWUobikpewogICAgCQljb3V0IDw8ICJZRVMiIDw8IGVuZGw7CgkJfQoJCWVsc2UgY291dCA8PCAiTk8iIDw8IGVuZGw7Cgl9Cn0=