Description
本题知识点为异或,贪心,构造,思维。
给定一个正整数 n 与非负整数 k,尝试构造一个长度为 n 的排列1 p,使得 f(i)=mex(p0,p1,⋯,pi)2满足 f(0)⊕f(1)⊕⋯⊕f(n−1)=k。
*1长度为 n 的排列 p 就是把 0 到 n−1 这 n 个整数按任意顺序排成的一个序列,每个数字恰好出现一次。
*2定义一个集合 S 的 MEX(Minimal Excludant) 表示一个非负整数集合中,"最小的"、"没有出现过"的非负整数。数学上定义为 $$\operatorname{mex}(S) = \min{ x\in \mathbb{N} \mid x\notin S }$$例如 mex({0,1,2,3,3,4,7,8})=5。
本题包含多个测试数据,第一行包含一个整数 T 满足 1≤T≤1×104,表示测试数据组数。
接下来 T 行每行包含两个空格隔开的整数 n,k,满足 $1\leq n\leq 2\times 1\times10^5,0\leq k\leq 1\times10^9$。
保证所有测试数据的 n 的总和不超过 2×105。
Output
对于每一组测试用例,若不存在这样的排列,仅需输出一行NO。
否则,其第一行输出 YES,第二行输出你的构造排列 p。
答案请严格区分大小写输出,构造方案不唯一,仅需输出一个构造结果。
Samples
3
1 0
9 12
5 1
NO
YES
2 3 5 6 7 8 0 1 4
YES
1 2 3 0 4
Note
在第三组测试用例中,根据给出的构造方案:
- f(0)=mex([3])=0,
- f(1)=mex([3,0])=1,
- f(2)=mex([3,0,2])=1,
- f(3)=mex([3,0,2,1])=4,
- f(4)=mex([3,0,2,1,4])=5,
所以 $f(0)\oplus f(1)\oplus f(2)\oplus f(3)\oplus f(4)=0\oplus 1\oplus 1\oplus 4\oplus5=1=k$。所以序列 [3,0,2,1,4] 是合法解。