Consider the number x stored in uint32 data type. We can multiply or divide it by 2 any number of times in any order. Can we obtain the number y after some sequence of operations?
When a is stored in an uint32, and we multiply it by 2, it transforms into (a⋅2)mod232. For example, (3⋅2)mod232=6, and (2,147,483,649⋅2)mod232=2.
When a is stored in an uint32, and we divide it by 2, it transforms into ⌊2a⌋. For example, ⌊26⌋=3, and ⌊23⌋=1.
The first line contains an integer t, the number of test cases (1≤t≤1000). The next t lines describe test cases, one per line. Each test case is given by two integers x and y (0≤x,y<232).
For each test case, print a single word on a separate line: "Yes" if we can turn x into y using the allowed operations, or "No" otherwise.
In the first test case, we can multiply x by 2, and then divide the result by 2 to get y.
In the second test case, there is no way to turn x into y.