#include <iostream>
#include <vector>

using namespace std;
using ll = long long;

bool isRed(ll x, ll y) {
    // Si c'est le sommet du triangle initial
    if (x == 1 && y == 1) return true;
    
    // Trouver la plus grande puissance de 2 inférieure ou égale à x
    ll step = 1;
    while ((1LL << step) <= x) step++;
    step--;
    
    // Taille du sous-triangle à cette étape
    ll size = (1LL << step);
    
    // Position relative dans le sous-triangle
    ll relX = x;
    ll relY = y;
    
    while (size > 1) {
        // Si le point est dans le triangle du milieu (bleu)
        if (relX > size/2 && relY > relX - size && relY <= relX) {
            return false;
        }
        
        // Ajuster les coordonnées pour le sous-triangle approprié
        if (relX > size/2) {
            if (relY <= relX - size) {
                // Triangle gauche
                relX = relX - size/2;
            } else if (relY > relX) {
                // Triangle droit
                relX = relX - size/2;
                relY = relY - size;
            }
        }
        
        size /= 2;
    }
    
    return true;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int Q;
    cin >> Q;
    
    while (Q--) {
        ll x, y;
        cin >> x >> y;
        cout << (isRed(x, y) ? 1 : 0) << "\n";
    }
    
    return 0;
}