#include using namespace std; // --- Macros --- #define ll long long #define rep(i,a,b) for(int i=(a); i<(b); ++i) #define rrep(i,a,b) for(int i=(a); i>=(b); --i) #define all(x) (x).begin(), (x).end() // --- I/O Helpers --- template void read(vector& v){ for(auto &x:v) cin>>x; } template void print(const vector& v){ for(const auto &x:v) cout< getUniqueFactors(long long n) { vector factors; for (int d : {2, 3, 5}) { if (n % d == 0) { factors.push_back(d); while (n % d == 0) n /= d; } } int idx = 0; for (long long d = 7; d * d <= n; ) { if (n % d == 0) { factors.push_back(d); while (n % d == 0) n /= d; } d += wheel_inc[idx++]; if (idx == 8) idx = 0; } if (n > 1) factors.push_back(n); return factors; } // 2. Sieve (First N Primes) vector findFirstNPrimes(long long n) { vector primes; if (n <= 0) return primes; long long limit = (n < 6) ? 15 : (long long)(n * (log(n) + log(log(n))) * 1.15); vector is_prime(limit + 1, true); is_prime[0] = is_prime[1] = false; for (long long p = 2; p * p <= limit; p++) { if (is_prime[p]) { for (long long i = p * p; i <= limit; i += p) is_prime[i] = false; } } for (long long p = 2; p <= limit && primes.size() < n; p++) { if (is_prime[p]) primes.push_back(p); } return primes; } } using namespace NT; // --- Solution --- // ========================================== // 1. DECIMAL TO BINARY (Bitwise) // Complexity: O(log N) // ========================================== string decimalToBinary(long long n) { if (n == 0) return "0"; string binary = ""; binary.reserve(64); if (n > 0) { while (n > 0) { binary += (n & 1) + '0'; n >>= 1; } reverse(binary.begin(), binary.end()); } return binary; } void solve() { ll x,y,z; cin >> x >> y >> z; string X = decimalToBinary(x); string Y = decimalToBinary(y); string Z = decimalToBinary(z); ll mx = max(X.size(),max(Y.size(),Z.size())); if(X.size() < mx){ string t; for(int i=1;i<=(mx-X.size());i++){ t.push_back('0'); } for(auto c : X){ t.push_back(c); } X = t; } if(Y.size() < mx){ string t; for(int i=1;i<=(mx-Y.size());i++){ t.push_back('0'); } for(auto c : Y){ t.push_back(c); } Y = t; } if(Z.size() < mx){ string t; for(int i=1;i<=(mx-Z.size());i++){ t.push_back('0'); } for(auto c : Z){ t.push_back(c); } Z = t; } bool flag = true; for(int i = 0; i < mx; i++){ if(X[i] == Y[i] && X[i] == '1'){ if(Z[i] != '1'){ flag = false; break; } } if(Y[i] == Z[i] && Y[i] == '1'){ if(X[i] != '1'){ flag = false; break; } } if(X[i] == Z[i] && X[i] == '1'){ if(Y[i] != '1'){ flag = false; break; } } } cout<<((flag==true)?"YES\n":"NO\n"); } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); ll T = 1; cin >> T; while(T--){ solve(); } return 0; }