A permutation of length n is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array) and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).

For a positive integer n, we call a permutation p of length n good if the following condition holds for every pair i and j (1 ≤ i ≤ j ≤ n) — 

  * (p_i  OR  p_{i+1}  OR  …  OR  p_{j-1}  OR  p_{j}) ≥ j-i+1, where OR denotes the [bitwise OR operation.](https://en.wikipedia.org/wiki/Bitwise_operation#OR)



In other words, a permutation p is good if for every subarray of p, the OR of all elements in it is not less than the number of elements in that subarray. 

Given a positive integer n, output any good permutation of length n. We can show that for the given constraints such a permutation always exists.

Input

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

The first and only line of every test case contains a single integer n (1 ≤ n ≤ 100).

Output

For every test, output any good permutation of length n on a separate line. 

Example

Input


3
1
3
7


Output


1
3 1 2
4 3 5 2 7 1 6

Note

For n = 3, [3,1,2] is a good permutation. Some of the subarrays are listed below. 

  * 3 OR 1 = 3 ≥ 2 (i = 1,j = 2) 
  * 3 OR 1 OR 2 = 3 ≥ 3 (i = 1,j = 3) 
  * 1 OR 2 = 3 ≥ 2 (i = 2,j = 3) 
  * 1 ≥ 1 (i = 2,j = 2) 



Similarly, you can verify that [4,3,5,2,7,1,6] is also good.
# def seg_tree(arr,l,r,seg,ind):
#     if l==r:
#         seg[ind] = arr[l]

#     else:
#         mid = (l+r)//2

#         seg_tree(arr,l,mid,seg,2*ind+1)
#         seg_tree(arr,mid+1,r,seg,2*ind+2)

#         seg[ind] = seg[2*ind+1]+seg[2*ind+2]

# def get_sum(l1,r1,l2,r2,seg,ind):
    
#     if l1==l2 and r1==r2:
#         return seg[ind]
#     elif l1 > r1:
#         return 0
#     else:
#         mid = (l2+r2)//2
#         return get_sum(l1,min(r1,mid),l2,mid,seg,2*ind+1) + get_sum(max(l1,mid+1),r1,mid+1,r2,seg,2*ind+2)

# def modify(l,r,seg,arr,pos,val,ind):
#     if l==r:
#         seg[ind] = val
#         arr[pos] = val
#     else:
#         mid = (l+r)//2

#         if pos <= mid:
#             modify(l,mid,seg,arr,pos,val,2*ind+1)
#         else:
#             modify(mid+1,r,seg,arr,pos,val,2*ind+2)

#         seg[ind] = seg[2*ind+1]+seg[2*ind+2]


# n,q = map(int,input().split())

# arr = [0]*n

# seg = [None]*(4*len(arr))

# seg_tree(arr,0,len(arr)-1,seg,0)

# for i in range(q):
#     a,b,c = input().split()

#     if a=="a":
#         modify(0,len(arr)-1,seg,arr,int(b)-1,(arr[int(b)-1]+int(c))%2,0)
#     else:
#         print(int(c)+1-int(b) - get_sum(int(b)-1,int(c)-1,0,len(arr)-1,seg,0))

# def dijksta(graph,edge,n):

#     Unvisit = {(0,0)}
#     dist = [0]*n
#     for i in range(1,n):
#         Unvisit.add((10000000000,i))
#         dist[i] = 10000000000


#     while  Unvisit:

#         x = min(Unvisit)
#         Unvisit.remove(x)

#         u = x[1]
#         d = x[0]

#         for v in graph[u]:
#             if dist[u] + edge[u][v] < dist[v]:
#                 Unvisit.remove((dist[v],v))
#                 dist[v] =  dist[u] + edge[u][v]
#                 Unvisit.add((dist[v],v))
#     return dist[n-1]



for _ in range(int(input())):
    n = int(input())
    
    arr = list(range(1,n+1))
    print(*arr)    
