#973. 硬币

硬币

题目描述

在伯兰(Berland),有两种面值的硬币,面值分别为 22 和 kk。

你的任务是判断是否可以用这些硬币表示出面值 nn,即是否存在非负整数 xx 和 yy,使得 2⋅x+k⋅y=n2 \cdot x + k \cdot y = n。

输入格式

第一行包含一个整数 tt (1≤t≤1041 \le t \le 10^4) —— 测试用例的数量。

每个测试用例仅包含一行,有两个整数 nn 和 kk (1≤k≤n≤10181 \le k \le n \le 10^{18};k≠2k \neq 2) —— 分别表示要表示的目标面值和第二种硬币的面值。

输出格式

对于每个测试用例,如果能够用这些硬币表示出 nn,输出 YES;否则输出 NO。

样例输入 1

4
5 3
6 1
7 4
8 8

样例输出 1

YES
YES
NO
YES

说明

样例解释

  • 在第一个测试用例中,你可以取一枚面值为 22 的硬币和一枚面值为 k=3k=3 的硬币(2×1+3×1=52 \times 1 + 3 \times 1 = 5)。
  • 在第二个测试用例中,你可以取三枚面值为 22 的硬币,或者取六枚面值为 k=1k=1 的硬币。
  • 在第三个测试用例中,无法组合出面值 77。
  • 在第四个测试用例中,你可以取一枚面值为 k=8k=8 的硬币。

数据范围

  • 对于所有测试点,保证 1≤t≤1041 \le t \le 10^4。
  • 对于每个测试用例,保证 1≤k≤n≤10181 \le k \le n \le 10^{18} 且 k≠2k \neq 2。
  • 保证所有的输入数值均为整数。