题目背景
小 U 对于从一个集合映射到一个数的函数很感兴趣,而 mex 是一个很好的例子。
mex(S) 指的是在集合 S 中没有出现过的最小非负整数。
题目描述
多组数据。
每组数据,给定 c,要求构造序列 a1,a2,...,an∈[0,2×109] 满足
$$\sum\limits_{1\le l\le r\le n}\text{mex}(a_l,a_{l+1},...,a_r)=c
$$
其中要求 1≤n≤3000。可以证明在该题的数据范围内如果存在解,则在 1≤n≤3000 时一定存在解。
输入格式
第一行一个整数,数据组数 T。
之后 T 行每行一个非负整数 c。
输出格式
对于每组数据:
如果无解,则仅输出一行一个整数 −1。
否则,第一行输出一个正整数 n。
第二行输出 n 个非负整数 a1,a2,...,an。
4
13
25
32
0
7
1 9 1 9 8 1 0
13
1 1 4 5 1 4 1 9 1 9 8 1 0
8
1 2 3 9 0 7 3 8
7
1 2 3 9 7 3 8
提示
样例解释
对于样例 #1:只有 mex(a7)=1,且 ∀1≤i≤6 有 mex(ai,ai+1,...,a7)=2,因而总和为 13。
数据范围
id 为 subtask 编号。
id |
特殊性质 |
分数 |
id |
特殊性质 |
分数 |
1 |
c≤3×103 |
3 |
5 |
c≤8×106 |
10 |
2 |
c≤6×103 |
7 |
6 |
c≤1×108 |
3 |
c≤8×104 |
10 |
7 |
c≤1×109 |
25 |
4 |
c≤4×106 |
15 |
8 |
c≤2×109 |
20 |
对于 100% 的数据,T≤310,0≤c≤2×109。