#CF1922E. 递增子序列

递增子序列

E. 递增子序列

时间限制:每个测试 22
内存限制:每个测试 256256 MB

我们回顾一下,数组 aa 的一个递增子序列是指从原数组中删除一些元素但不改变剩余元素的顺序后得到的序列,且剩余元素严格递增(即 ab1<ab2<<abka_{b_1} < a_{b_2} < \dots < a_{b_k}b1<b2<<bkb_1 < b_2 < \dots < b_k)。注意空子序列也是一个递增子序列。

给定一个正整数 XX。你的任务是构造一个长度不超过 200200 的整数数组,使其恰好有 XX 个递增子序列;如果不存在这样的数组,则报告无解。如果存在多个答案,输出任意一个均可。

如果两个子序列由相同的元素组成但对应数组中的不同位置,则它们被视为不同的子序列(例如,数组 [2,2][2,2] 有两个不同的子序列等于 [2][2])。

输入

第一行包含一个整数 tt1t10001 \le t \le 1000)——测试用例的数量。

每个测试用例只有一行,包含一个整数 XX2X10182 \le X \le 10^{18})。

输出

对于每个询问,输出对应的答案。如果无法找到满足条件的数组,在第一行输出 1-1。否则,在第一行输出一个正整数 nn——数组的长度。在第二行输出 nn 个整数——所求的数组本身。如果存在多个答案,输出任意一个均可。数组的所有元素必须在范围 [109,109][-10^9, 10^9] 内。

样例

输入

4
2
5
13
37

输出

1
0
3
0 1 0
5
2 2 3 4 2
7
-1 -1 0 0 2 3 -1