#include "bits/stdc++.h" #pragma GCC optimize ("O3") #pragma GCC target ("sse4") using namespace std; // #include // using namespace __gnu_pbds; // #pragma region // template // using ordered_set = tree, rb_tree_tag, tree_order_statistics_node_update>; #define ll long long #define ull unsigned long long #define ld long double #define mp make_pair #define pb push_back #define f first #define s second #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define ins insert #define sz(x) static_cast((x).size()) void __print(int x) {cout << x;} void __print(long x) {cout << x;} void __print(long long x) {cout << x;} void __print(unsigned x) {cout << x;} void __print(unsigned long x) {cout << x;} void __print(unsigned long long x) {cout << x;} void __print(float x) {cout << x;} void __print(double x) {cout << x;} void __print(long double x) {cout << x;} void __print(char x) {cout << '\'' << x << '\'';} void __print(const char *x) {cout << '\"' << x << '\"';} void __print(const string &x) {cout << '\"' << x << '\"';} void __print(bool x) {cout << (x ? "true" : "false");} template void __print(const pair &x); template void __print(const bitset& x); template void __print(const T &x); template void _print(T t, V... v); template void __print(const pair &x) {cout << '{'; __print(x.first); cout << ", "; __print(x.second); cout << '}';} template void __print(const T &x) {int f = 0; cout << '{'; for (auto &i: x) cout << (f++ ? ", " : ""), __print(i); cout << "}";} void _print() {cout << "]\n";} template void _print(T t, V... v) {__print(t); if (sizeof...(v)) cout << ", "; _print(v...);} template void __print(const bitset& x) { cout << x; } #define F_OR(i, a, b, s) for (int i=(a); (s)>0?i<(int)(b):i>(int)(b); i+=(s)) #define F_OR1(e) F_OR(i, 0, e, 1) #define F_OR2(i, e) F_OR(i, 0, e, 1) #define F_OR3(i, b, e) F_OR(i, b, e, 1) #define F_OR4(i, b, e, s) F_OR(i, b, e, s) #define GET5(a, b, c, d, e, ...) e #define F_ORC(...) GET5(__VA_ARGS__, F_OR4, F_OR3, F_OR2, F_OR1) #define FOR(...) F_ORC(__VA_ARGS__)(__VA_ARGS__) #define E_ACH2(x, a) for (auto& x: a) #define E_ACH3(x, y, a) for (auto& [x, y]: a) #define E_ACH4(x, y, z, a) for (auto& [x, y, z]: a) #define E_ACHC(...) GET5(__VA_ARGS__, E_ACH4, E_ACH3, E_ACH2) #define EACH(...) E_ACHC(__VA_ARGS__)(__VA_ARGS__) template using vec = vector; template using vvec = vec>; template using vvvec = vec>; template using vac = vec>; template using vvac = vec>; void decrement() {} template void decrement(vec &v) { EACH(x, v) --x; } template void decrement(vec> &v) { EACH(row, v) EACH(x, row) --x; } template void decrement(vec> &v) { EACH(row, v) EACH(x, row) --x; } template void decrement(T &t, U &...u) { --t; decrement(u...); } #define SUBMASKS(t, s) for (ll t = (s); t >= 0; t = (t == 0 ? -1 : (t - 1) & (s))) #define MIN(v) *min_element(all(v)) #define MAX(v) *max_element(all(v)) template using vac = vec>; template using vvac = vec>; template istream &operator>>(istream &s, array& v) { FOR(sz(v)) s >> v[i]; return s; } template istream &operator>>(istream &s, vec& v) { FOR(sz(v)) s >> v[i]; return s; } template void read(T& x) { cin >> x; } template void read(T &t, U &...u) { read(t); read(u...); } #define ints(...) int __VA_ARGS__; read(__VA_ARGS__); #define int1(...) ints(__VA_ARGS__); decrement(__VA_ARGS__); #define lls(...) ll __VA_ARGS__; read(__VA_ARGS__); #define vint(n, a) int n; cin >> n; vec a(n); cin >> a; #define vin(n, a) vec a((n)); cin >> a; #define vvin(n, m, a) vec> a((n), vec((m))); cin >> a; #define vain(n, m, a) vec> a((n)); cin >> a; #define graphin(n, m, adj) vvec adj(n); FOR(m) {int1(u, v); adj[u].pb(v); adj[v].pb(u); } #define wgraphin(n, m, adj) vvac adj(n); FOR(m) {int1(u, v); ints(w); adj[u].pb({v,w}); adj[v].pb({u,w}); } #define dgraphin(n, m, adj) vvec adj(n); FOR(m) {int1(u, v); adj[u].pb(v);} #define dwgraphin(n, m, adj) vvac adj(n); FOR(m) {int1(u, v, w); adj[u].pb({v, w+1});} #define dbg(x...) cout << "[" <<__func__<<":"<<__LINE__ - 5 <<" [" << #x << "] = ["; _print(x); cout << endl; // #define dbg(x...) // mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); // uniform_int_distribution distribution(10, 100); // ints(N, M); // wgraphin(N, M, A); // dbg(A); void solve_case() { lls(N); for (ll p : {2, 3, 5, 7, 13, 17, 19, 31}) { auto q = 1LL << p, r = q / 2; if (r * (q - 1) == N) { cout << "Yes" << endl; return; } } cout << "No" << endl; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); // solve(); int T = 1; // int T; cin >> T; for (int t = 0; t < T; ++t) { solve_case(); } return 0; }