#CF4114. 金块游戏

金块游戏

题目描述

最初,你有一个含有 nn 块金块的单一堆。在一次操作中,你可以执行以下操作之一:

  • 取出任何一堆,并将其分成两堆,使得其中一堆的金块数量正好是另一堆的两倍。(所有的堆都应该有整数数量的金块。)

image

一个可能的移动是取一个大小为 6 的堆,将其分成大小为 24 的两堆,这是有效的,因为 4 正好是 2 的两倍。

你能通过零次或多次操作制作一个包含 mm 块金块的堆吗?

输入格式

第一行包含一个整数 t(1t1000)t(1≤t≤1000) ——测试用例的数量。

每个测试用例的唯一一行包含两个整数 nnm(1n,m107)m(1≤n,m≤10^7) ——起始和目标堆大小。

输出格式

对于每个测试用例,如果你能制作一个大小为 mm 的堆,则输出 YES,否则输出 NO

你可以以任何大小写形式输出答案(例如,字符串 yEsyesYesYES 都会被视为肯定的答案)。

测试样例

11
6 4
9 4
4 2
18 27
27 4
27 2
27 10
1 1
3 1
5 1
746001 2984004
YES
YES
NO
NO
YES
YES
NO
YES
YES
NO
NO

样例说明

在第一个测试用例中,可以制作一个大小为 4 的堆。

在第二个测试用例中,我们可以执行以下操作:{9}{6,3}{4,2,3}\{9\}→\{6,3\}→\{4,2,3\}

在第三个测试用例中,我们无法执行任何操作。

在第四个测试用例中,我们不能得到比开始时更大的堆。