#5648. 分糖果

分糖果

down

testlib

题目描述

小 D 是一个幼儿园老师,他需要将糖果分给孩子们。他会准备 nn 个盘子,并在第 ii 个盘子中放入 aia_i 个糖果,要求盘子中的糖果数目互不相同。总共有 mm 个小朋友,第 ii 个小朋友需要 ii 个糖果。小 D 希望无论哪个小朋友来找他要糖果,他都能选出若干个完整的盘子,使得这些盘子中的糖果数之和恰好等于需要的数量。

但是第 xx 个小朋友很调皮,所以小 D 不希望给他吃糖果。因此他还希望,如果需要的糖果数目恰好为 xx,不存在任何选盘子的方案,使得糖果总数为 xx。除此之外,所有 [1,m][1,m] 中的整数仍需满足之前的要求。

由于盘子数目有限,小 D 只能使用不超过 2020 个盘子,请你帮他构造一种放糖果的方案,或告知他不存在这样的方案。

输入格式

本题有多组测试数据。

第一行一个整数 TT,表示测试数据组数。

对于每组数据,输入两个整数 m,xm,x,表示总人数和例外的编号。

输出格式

对于每组数据,如果无解,输出一行一个整数 1-1

否则先输出一行一个整数 nn,表示使用的盘子数量。需要保证 n20n\le 20

然后输出一行 nn 个互不相同的整数 aia_i,表示每个盘子的糖果数量。需要保证 1ai1051\le a_i\le 10^5

样例

样例 1 输入

3
6 4
7 3
11 11

样例 1 输出

3
1 2 5
-1
4
1 2 3 4

样例 1 解释

对于第一组数据:

  • i=1i=1{1}\{1\} 是合法的。
  • i=2i=2{2}\{2\} 是合法的。
  • i=3i=3{1,2}\{1,2\} 是合法的。
  • i=4i=4,不存在合法的集合。
  • i=5i=5{5}\{5\} 是合法的。
  • i=6i=6{1,5}\{1,5\} 是合法的。

附加样例

见下发文件,第 ii 组下发样例符合第 ii 个子任务的限制。

本题下发文件中还提供了参考 checker.cpptestlib.h。本地测试时将 checker.cpptestlib.h 放在同一目录中编译得到可执行文件 checker。将 checker 与下发的样例输入输出 candy.in/ans 以及你的输出 candy.out 放在同一目录下,使用命令 ./checker candy.in candy.out candy.ans 即可进行本地测试。

请注意,最终评测使用的 checker 与下发文件不相同,你的实现不应依赖 checker 的实现。

数据范围与约定

对于全部数据,1T100,1xm1051\le T\le 100,1\le x\le m\le 10^5

Subtask 分值 mm\le 特殊性质
1 5 2020
2 10 200200
3 15 10001000
4 10 10510^5 x=m,x30x=m,x\ge 30
5 35 x30x\ge 30
6 25