#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace atcoder; typedef long long int ll; typedef pair pii; typedef pair pis; typedef pair psi; typedef pair pll; typedef pair pls; typedef pair psl; typedef pair pff; typedef pair pdd; typedef vector vb; typedef vector> vvb; typedef vector>> vvvb; typedef vector vi; typedef vector> vvi; typedef vector>> vvvi; typedef vector vll; typedef vector> vvll; typedef vector>> vvvll; typedef vector vf; typedef vector> vvf; typedef vector>> vvvf; typedef vector vd; typedef vector> vvd; typedef vector>> vvvd; typedef vector vs; typedef vector> vvs; typedef vector vpii; typedef vector> vvpii; typedef vector>> vvvpii; typedef vector vpll; typedef vector> vvpll; typedef vector>> vvvpll; typedef unordered_map umcc; typedef unordered_map umci; typedef unordered_map umcll; typedef unordered_map umcs; typedef unordered_map umic; typedef unordered_map umii; typedef unordered_map umill; typedef unordered_map umis; typedef unordered_map umllll; typedef unordered_map umlls; typedef unordered_map umsc; typedef unordered_map umsi; typedef unordered_map umsll; typedef unordered_set usc; typedef unordered_set usi; typedef unordered_set usll; typedef unordered_set uss; const double PI = 3.141592653589793; #define rep(i, n) for (int i = 0; i < (int)(n); ++i) #define repe(i, n) for (int i = 0; i <= (int)(n); ++i) #define rep1(i, n) for (int i = 1; i < (int)(n); ++i) #define rep1e(i, n) for (int i = 1; i <= (int)(n); ++i) #define repab(i, a, b) for (int i = (a); i < (b); ++i) #define repabe(i, a, b) for (int i = (a); i <= (b); ++i) #define mod107(m) m % 1000000007 #define mod998(m) m % 998244353 const ll m107 = 1000000007; const ll m998 = 998244353; // 数値を16桁で表示(誤差が厳しい問題に対応) #define cout16 std::cout << std::fixed << std::setprecision(16) // endl no flush (flush処理は重たい) #define elnf "\n" // 競プロ用環境セッティング void preprocess() { std::cin.tie(nullptr); std::ios_base::sync_with_stdio(false); } // end of func template void printvec(const vector &vec) { rep(i, vec.size()) cout << vec[i] << " "; cout << endl; } // end of func template void printvvec(const vector &vec) { rep(i, vec.size()) { rep(j, vec[i].size()) cout << vec[i][j] << " "; cout << endl; } } // end of func const bool debug = true; int main() { preprocess(); int n; cin >> n; rep(_, n) { ll a; cin >> a; ll sq; bool flag; sq = ceil(sqrt(a)); flag = false; if (a % 2ll == 0) { a >>= 1; flag = true; } else { for (ll p = 3; p <= sq; p += 2) { if (a % p == 0) { flag = true; a /= p; break; } } } if (flag == false) { cout << "No\n"; continue; } sq = ceil(sqrt(a)); flag = false; if (a % 2 == 0) { a >>= 1; flag = true; } else { for (ll p = 3; p <= sq; p += 2) { if (a % p == 0) { flag = true; a /= p; break; } } } if (flag == false || a == 1) { cout << "No\n"; continue; } if (a == 2) { cout << "Yes\n"; continue; } sq = ceil(sqrt(a)); flag = false; if (a % 2 == 0) { flag = true; } else { for (ll p = 3; p <= sq; p += 2) { if (a % p == 0) { flag = true; break; } } } if (flag) cout << "No\n"; else cout << "Yes\n"; } return 0; } // end of main