#CF2072C. Creating Keys for StORages Has Become My Main Skill

Creating Keys for StORages Has Become My Main Skill

题目描述

给定两个整数 n,xn,x,请构造一个长度为 nn 的数组 aa,作为编号为 (n,x)(n,x) 的储藏室钥匙。

这个数组需要满足:

  • $a_1 \operatorname{or} a_2 \operatorname{or} \cdots \operatorname{or} a_n=x$;
  • 在所有满足上一条的数组中,集合 {a1,a2,,an}\{a_1,a_2,\ldots,a_n\} 的 MEX 尽可能大。

这里 or\operatorname{or} 表示按位或。

MEX(S)\operatorname{MEX}(S) 定义为最小的非负整数 zz,满足 zSz\notin S,并且所有 0y<z0\le y<z 都属于 SS

请对每组数据输出任意一个满足要求的数组。

输入格式

第一行包含一个整数 tt,表示测试用例数量。

接下来 tt 行,每行包含两个整数 n,xn,x,表示数组长度和目标按位或值。

输出格式

对每个测试用例,输出一行 nn 个整数 aia_i,表示你构造出的钥匙数组。

如果存在多种合法答案,输出任意一种即可。

数据范围

  • 1t1041\le t\le 10^4
  • 1n21051\le n\le 2\cdot 10^5
  • 0x<2300\le x<2^{30}
  • 所有测试用例的 nn 之和不超过 21052\cdot 10^5
  • 输出的每个 aia_i 需要满足 0ai<2300\le a_i<2^{30}

输入输出样例

输入

9
1 69
7 7
5 7
7 3
8 7
3 52
9 11
6 15
2 3

输出

69
6 0 3 4 1 2 5
4 1 3 0 2
0 1 2 3 2 1 0
7 0 6 1 5 2 4 3
0 52 0
0 1 8 3 0 9 11 2 10
4 0 3 8 1 2
0 3

样例说明

样例输出只展示了一种可行构造。只要数组整体按位或等于 xx,并且 MEX 已经达到最大值,就会被判为正确。