题目描述
Maddy 碰到了一台机器,在机器面前她需要报出一长串数,这样她才可以获得水晶之心!
机器首先告诉了 Maddy 一个整数 n,具体而言,这串数的要求如下:
- 这串数由 n 个在 [0,230) 之内的整数组成,记其为 a1,a2,…,an。
- 对于所有的 1≤i<n,满足有 ai<ai+1 且 $a_i \text{ xor } a_{i+1} < a_i \text{ and } a_{i+1}$。
请帮助 Maddy 求出一串这样的数,或告诉 Maddy 答案并不存在。
输入格式
第一行输入一个整数 T (1≤T≤103),表示测试数据的数量。
每组测试数据的唯一一行输入一个整数 n (2≤n≤106),表示机器告诉 Maddy 的数。
保证所有测试数据输入的 ∑n≤106。
输出格式
对于每组测试数据中若存在这样的一串数则输出一行 n 个整数,表示一串满足机器要求的数,若不存在则输出一行一个整数 −1。
如果有多个合法的答案则你可以输出其中任意一个。
4
2
3
4
5
9 15
4 5 6
9 10 12 15
8 9 10 11 12
提示
样例 1 解释
对于第 1 个样例,a1 xor a2=9 xor 15=6,a1 and a2=9 and 15=9,因此有 a1 xor a2<a1 and a2,且容易发现 a1<a2。
对于第 2 个样例,
- a1 xor a2=4 xor 5=1,a1 and a2=4 and 5=4,因此有 a1 xor a2<a1 and a2,且容易发现 a1<a2。
- a2 xor a3=5 xor 6=3,a2 and a3=5 and 6=4,因此有 a2 xor a3<a2 and a3,且容易发现 a2<a3。
提示
对于两个整数 a 和 b,a xor b 表示按位取异或,即结果的二进制表示的一位为 1 当且仅当原数的二进制表示在该位上有且仅有一个 1。
对于两个整数 a 和 b,a and b 表示按位取与,即结果的二进制表示的一位为 1 当且仅当原数的二进制表示在该位皆为 1。