#include <iostream>
#include <algorithm>
#include <string.h>
#include <queue>
#include <vector>

#define INF 987654321

using namespace std;

int main() {
    int t;
    scanf("%d",&t);
    while(t--){
        int a,b,flag=0;
        scanf("%d %d",&a,&b);
        if(a==b)printf("YES\n");
        else if(a>b)printf("NO\n");
        else{
            //여기가 실제로 계산해야되는 부분.
            //2^n꼴은 무조건 1->2->4->8->16으로만 이동이 가능함.
            // 3=11으로서, 3+1, 3+10, 3+11 3개가 가능함. 3->4,5,6다 가능하다.
            // 7=111으로서, 7->8,9,10,11,12,13,14다 가능하다.
            // 결국 우리가 그럼 찾아야 되는 값은 5,6과 같은 중간에 비는값이 있는 값들.

            // 5 = 101으로, 5+1, 5+100, 5+101.  5->6,9,10로 이동이 가능.
            // 6 = 110으로, 6+10, 6+100, 6+110. 6->8,10,12로 이동이 가능.
            // 결론. 3은 11,13,14를 못감. 8 =1000, 9=1001, 10=1010, 11=1011
            // 와 그럼 3=11 숫자가 2개다보니, 11과 같이 3개가 필요한 곳은 못간다.
            for(int i=0;i<30;i++)
            {
              if((a>>i)&1)flag++;
              if((b>>i)&1)flag--;
              if(flag<0)
              {
                  printf("NO\n");
                  break;
              }
            }
            if(flag>=0)
            {
              printf("YES\n");
            }
        }
    }
    return 0;
}