神奇的小江鸟

题目背景

[The English statement for T5](https://www.luogu.com.cn/problem/U508234) You can also see the pdf at the bottom of the chinese problem statement. 感谢 [ineverleft](https://www.luogu.com.cn/user/362679) 为本题提供的本地调试 checker。 「愿有前程可奔赴,亦有岁月可回首。」

题目描述

小 $ \zeta $ 在探险过程中看到了一个大锁。 这个大锁有 $ n $ 个拨圈,第 $ i $ 个拨圈的拨动范围为 $ l_i $ 到 $ r_i $ 之间(含两个边界)的所有整数(保证 $ l_i \le r_i $)。 我们定义这个大锁的「自由度」为所有拨圈上的数的**最大公约数**,当锁的「自由度」大于等于 $ k $ 时,会被打开。 请你找到一种锁的开启方案,或报告无解。

输入输出格式

输入格式


**本题单测试点内含有多组测试数据**,第一行一个整数 $ T $,代表数据组数。 对于每组数据: 第一行两个整数 $ n,k $,分别代表拨圈数量和自由度限制。 接下来 $ n $ 行,每行两个整数 $ l_i,r_i $,含义见题目描述。

输出格式


对于每组数据: * 如果有解,第一行输出 `Yes`,下一行输出 $ n $ 个空格分隔的整数,第 $ i $ 个为你的构造方案中第 $ i $ 个拨圈显示的数。**本题使用了 Special Judge,符合要求的答案均判对。** * 否则,输出一行 `No` 表示无解。

输入输出样例

输入样例 #1

1
5 10
1 12
44 50
9 10
88 99
29 99

输出样例 #1

Yes
10 50 10 90 30

输入样例 #2

2
3 11
99 10003
39 299
39 10003
5 55
1 54
1 20
1 300
1 300
1 300

输出样例 #2

Yes
123 246 369
No

输入样例 #3

3
6 1
1 10
1 10
1 10
1 10
1 10
1 10
5 4
11 15
6 10
9 14
20 23
27 29
5 11
20 30
50 70
111 120
72 77
119 121

输出样例 #3

Yes
1 1 4 5 1 4
Yes
14 7 14 21 28
Yes
24 60 120 72 120

输入样例 #4

4
3 33
32 34
65 67
97 101
3 5
299 99494993
499 49992999
499 39999939
4 25
719 830
2194 2893
132 142
199 225
3 10
140 143
131 135
238 241

输出样例 #4

Yes
33 66 99
Yes
1919810 11400 51400
Yes
729 2700 135 216
No

输入样例 #5

1
10 7
77 77
82 174
77 77
82 174
77 77
82 174
77 77
82 174
77 77
82 174

输出样例 #5

Yes
77 154 77 154 77 154 77 154 77 154

说明

**【样例 1 解释】** 唯一的一组数据 $ \gcd $ 为 $ 10 $。 五个样例自测均可使用下发的附件。**请注意部分样例可能存在多解,样例输出仅列举了一组可行解。** **【数据规模与约定】** 对于 $ 100\% $ 的数据,$ 1 \le T \le 5 $,$ 2 \le n \le 10^4 $,$ 1 \le l_i \le r_i \le 10^9 $,$ 1 \le k \le 1000 $。 **本题开启子任务捆绑测试。** * Subtask 1(10 pts):$ k=1 $。 * Subtask 2(15 pts):$ n \le 10 $,$ r_i - l_i + 1 \le 5 $。 * Subtask 3(15 pts):$ r_i \le 10^3 $。 * Subtask 4(10 pts):$ k \le 5 $,$ l_i,r_i $ 均在 $ 1 \le l_i \le r_i \le 10^9 $ 范围内等概率随机生成,该子任务只有 $ 1 $ 个测试点。 * Subtask 5(15 pts):对于每组数据,$ \exist 1 \le i \le n,l_i=r_i $。 * Subtask 6(35 pts):无特殊限制。 **【关于附加文件】** **本题下发了 `checker.cpp` 作为自测器。** 请将输入内容、你的程序输出、参考答案输出分别放置在 `restore.in`、`restore.out`、`restore.ans` 中,这三个文件必须与 `checker.cpp` 在同一目录下,运行 `checker.cpp`,终端上会给出自测结果。 **你需要保证你的输入满足 $ 100\% $ 数据范围的要求。** 注意,如果你的输入/输出/答案的格式和范围不正确的话,`checker.cpp` 出现的结果是不可预料的。因此,**请先确保你的三个文件格式正确。**