共鸣护符
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

あたいったら最強ね!
                     ——琪露诺
秋收祭临近,博丽神社决定举办一场"符札行进式"。为避免在巡游中出现灵力互相掣肘的事故,八云紫特地把所有用于镇场的护符按连续编号刻好了,从 LR (1 \le L \le R \le 1 \times 10^5)。
雾雨魔理沙一边抱着一摞护符,一边嚷嚷着要把"最厉害的放在最前面"。可灵梦白了她一眼:"乱来会炸庙的。护符之间要么会共鸣,要么会互斥。排错顺序可不是开玩笑。"
在幻想乡的术式里,两个编号存在相同大于1的因子的护符会产生温和的共鸣,而没有任何共同大于1因子的护符则会产生尖锐的互斥。为了让巡游既壮观又安全,排列必须遵守两条古老的规矩:
  • 若两枚护符共鸣靠前的那一枚必须更弱(编号更小),以引导后面的力量稳步放大;
  • 若两枚护符互斥靠前的那一枚必须更强(编号更大),用气势把后面的杂音按住。
总之,需要把从 LR 的每一枚护符恰好一次排成一列,使得整队都符合规则。

更具体地说:
给定两个整数 LR1 \le L \le R \le 1 \times 10^5),设 n=R-L+1
请构造一个长度为 n 的序列 \mathbf{v}=[v_1,v_2,\dots,v_n],使其为区间 [L,R] 上所有整数的一个排列(即在序列v中,L,L+1,\dots,R每个数均出现且恰好出现一次),并满足如下条件:
对任意下标 1 \le i < j \le n
  • 若 \gcd(v_i, v_j) \ne 1,则必须有 v_i < v_j
  • 若 \gcd(v_i, v_j) = 1,则必须有 v_i > v_j
等价地,上述要求可表述为:
对于任意 i<j,恒有
v_i > v_j \iff \gcd(v_i,v_j)=1, \qquad<br />v_i < v_j \iff \gcd(v_i,v_j)\ne 1.
如果无法构造满足条件的序列,请输出 `NO`;否则输出 `YES` 以及任意一个满足条件的序列。
该题为多组测试输入。

输入描述:

一个整数 T(1 \le T \le 1 \times 10^5),代表测试组数;
接下来 T 行,每行两个整数 L, R(1 \le L \le R \le 1 \times 10^5).
数据保证 \sum (R-L+1) \le 2 \times 10^5.

输出描述:

对每组数据:
若不存在满足条件的序列,输出一行"NO";
若存在,输出一行"YES",下一行输出 R-L+1 个用空格隔开的整数 v_1,v_2...v_n,表示构造出的序列。
若存在多种合法答案,输出任意一种均可。
示例1

输入

复制
1
1 2

输出

复制
YES
2 1

说明


备注:

gcd(a,b)ab的最大公约数.