// // Created by cteam24 on 11/27/21. // #include #include #include using namespace std; vector getDivisors(long long num) { vector starters{0}; vector enders; long long sqrtN = (long long) sqrt(num); for(long long i = 1; i <= sqrtN; i++) if(num % i == 0) { starters.push_back(i); enders.push_back(num / i); } if(enders.back() == starters.back()) enders.pop_back(); // num is a power of two, its sqrt was both in starters and enders for(long long i = enders.size() - 1; i >= 0; i--) starters.push_back(enders[i]); return starters; } int main(void) { int T; cin >> T; long long num; for(int i = 0; i < T; i++) { cin >> num; vector reachable = {0}; vector divisors = getDivisors(num); bool works = true; for(long long j = 1; j < divisors.size(); j++) { if(reachable[j-1] < divisors[j] - 1) { works = false; break; } else reachable.push_back(reachable[j-1] + divisors[j]); } if(works) cout << "Yes" << endl; else cout << "No" << endl; } return 0; }