#CF1965B. 缺失的子序列和

缺失的子序列和

缺失的子序列和

每个测试用例时间限制:2 秒 内存限制:256 兆字节

给定两个整数 nnkk。找出一个长度不超过 25 的非负整数序列 aa,满足以下条件: 1. 序列 aa不存在和为 kk 的子序列; 2. 对于所有满足 1vn1 \le v \le nvkv \neq k 的整数 vv,序列 aa都存在和为 vv 的子序列。

如果序列 bb 可以通过删除 aa 中若干个(可以是 0 个或全部)元素、且不改变剩余元素的顺序得到,那么 bb 就是 aa 的子序列。 例如:[5,2,3][5,2,3][1,5,7,8,2,4,3][1,5,7,8,2,4,3] 的子序列。

题目保证:在给定约束下,一定存在解

输入格式

第一行输入一个整数 tt1t10001 \le t \le 1000),表示测试用例的数量。 每个测试用例占一行,包含两个整数 nnkk2n1062 \le n \le 10^61kn1 \le k \le n),为题目描述的参数。

保证:所有测试用例的 nn 之和不超过 10710^7

输出格式

对于每个测试用例: 1. 第一行输出一个整数 mm1m251 \le m \le 25),表示你构造的序列长度; 2. 第二行输出 mm 个整数 aia_i0ai1090 \le a_i \le 10^9),表示你构造的序列。

如果存在多个解,输出任意一个即可。

样例输入

5
2 2
6 1
8 8
9 3
10 7

样例输出

1
1
5
2 3 4 5 6
7
1 1 1 1 1 1 1
4
7 1 4 1
4
1 2 8 3

样例解释

第一个样例:我们需要构造能凑出和为 11、但无法凑出和为 22 的序列。序列 a=[1]a=[1] 满足要求。

第二个样例:所有元素都大于 k=1k=1,因此无法凑出和为 11;而 11nn 中其余数字都直接存在于序列中,因此可以用长度为 1 的子序列凑出这些数。