B. Roof Construction

time limit per test

1 second

memory limit per test

256 megabytes

It has finally been decided to build a roof over the football field in School 179. Its construction will require placing n consecutive vertical pillars. Furthermore, the headmaster wants the heights of all the pillars to form a permutation p of integers from 0 to n−1, where pi is the height of the i-th pillar from the left (1≤i≤n).

As the chief, you know that the cost of construction of consecutive pillars is equal to the maximum value of the bitwise XOR of heights of all pairs of adjacent pillars. In other words, the cost of construction is equal to max1≤i≤n−1pi⊕pi+1, where ⊕ denotes the bitwise XOR operation.

Find any sequence of pillar heights p of length n with the smallest construction cost.

In this problem, a permutation is an array consisting of n distinct integers from 0 to n−1 in arbitrary order. For example, [2,3,1,0,4] is a permutation, but [1,0,1] is not a permutation (1 appears twice in the array) and [1,0,3] is also not a permutation (n=3, but 3 is in the array).

Input

Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤104). Description of the test cases follows.

The only line for each test case contains a single integer n (2≤n≤2⋅105) --- the number of pillars for the construction of the roof.

It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.

Output

For each test case print n integers p1, p2, ..., pn --- the sequence of pillar heights with the smallest construction cost.

If there are multiple answers, print any of them.

Example

Input

Copy

复制代码

4

2

3

5

10

Output

Copy

复制代码
0 1
2 0 1
3 2 1 0 4
4 6 3 2 0 8 9 1 7 5

Note

For n=2 there are 2 sequences of pillar heights:

  • 0,1\] --- cost of construction is 0⊕1=1.

For n=3 there are 6 sequences of pillar heights:

  • 0,1,2\] --- cost of construction is max(0⊕1,1⊕2)=max(1,3)=3.

  • 1,0,2\] --- cost of construction is max(1⊕0,0⊕2)=max(1,2)=2.

  • 2,0,1\] --- cost of construction is max(2⊕0,0⊕1)=max(2,1)=2.

解题说明:此题是一道数学题,为了保证值最小,找规律能发现要让相邻两个数的高位尽量相等。

cpp 复制代码
#include <stdio.h>

int main() 
{
    int tt;
    scanf("%d", &tt);
    while (tt--) 
    {
        int n;
        scanf("%d", &n);
        int k = 1;
        while (k < n) 
        {
            k *= 2;
        }
        k /= 2;
        for (int i = 1; i < n; i++) 
        {
            if (i == k) 
            {
                printf("0 %d ", k);
            }
            else
            {
                printf("%d ", i);
            }
        }
        printf("\n");
    }
    return 0;
}
相关推荐
无限进步_2 小时前
深入解析vector:一个完整的C++动态数组实现
c语言·开发语言·c++·windows·git·github·visual studio
智者知已应修善业2 小时前
【任何一个自然数m的立方均可写成m个连续奇数之和】2024-10-17
c语言·数据结构·c++·经验分享·笔记·算法
YYYing.2 小时前
【Linux/C++多线程篇(二) 】给线程装上“红绿灯”:通俗易懂的同步互斥机制讲解 & C++ 11下的多线程
linux·c语言·c++·经验分享·ubuntu
一叶落4382 小时前
LeetCode 135. 分发糖果(C语言)| 贪心算法 + 双向遍历详解
c语言·数据结构·算法·leetcode·贪心算法·哈希算法
李斯啦果2 小时前
【C语言】统计对称素数
c语言·开发语言
一叶落4382 小时前
LeetCode 42. 接雨水(C语言详解)——双指针经典解法
c语言·数据结构·c++·算法·leetcode
悲伤小伞3 小时前
数据结构重点知识整理
c语言·数据结构·c++·算法·leetcode
Yupureki3 小时前
《C++实战项目-高并发内存池》6.内存释放流程
c语言·开发语言·数据结构·c++·算法·哈希算法
ambition202423 小时前
蓝桥杯“水质检测“问题:0-1 BFS算法的完整解析
c语言·数据结构·c++·算法·蓝桥杯·宽度优先