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 help():
# 	n,q = map(int,input().split(" "))

# 	height = list(map(int,input().split(" ")))
# 	reward = list(map(int,input().split(" ")))

# 	if( n<= 1000 and q<= 1000):
# 		for qw in range(q):
# 			a,b,c = map(int,input().split(" "))
# 			b -= 1
# 			if( a == 1 ):
# 				height[b] = c
# 			# else:
# 			# 	if( height[b] > height[c] ):
				
					
# 			# 		for i in range(b,c+1,-1):



# 			# 	else:
# 	else:
# 		visited = [0]*n
# 		for i in range(n):
# 			if(height)

			
# for _ in range(1):
# 	help()
# from sys import stdin
# input = stdin.readline

# n = int(input())
# arr = list(map(int,input().split(" ")))

# dp = [[0]*n for i in range(n)]

# for i in range(1,n):
# 	arr[i] = arr[i]+arr[i-1]

# for l in range(2,n+1):
# 	for i in range(n-l+1):
# 		j = i+l-1
# 		if(i == 0 ):
# 			cnt = arr[j]
# 		else:
# 			cnt = arr[j] - arr[i-1]
# 		for k in range(i+1,j+1):
# 			dp[i][j] = max(dp[i][j] ,dp[i][k-1]+dp[k][j]+cnt)

# print dp[0][n-1]


# from random import randint

# n = 300
# points = []
# x = set()
# y = set()
# while len(x)!=n:
# 	x.add(randint(1,500))
# while len(y)!=n:
# 	y.add(randint(1,500))
# x = sorted(list(x))
# y = sorted(list(y))
# freq = [randint(1,10) for i in range(n)]
# mindist = 100000000000000
# minpts = []
# for i in range(500):
# 	# print(i)
# 	for j in range(500):
# 		cd = 0
# 		for k in range(n):
# 			cd += (abs(i-x[k])+ abs(j-y[k]))*freq[k]
		
# 		if(cd < mindist):
# 			mindist = cd
# 			minpts = [(i,j)]
# 		elif(cd == mindist):
# 			minpts.append((i,j))
# print(mindist)
# # print(minpts)

# valid = []
# for i in minpts:
# 	if(i[0] in x and i[1] in y):
# 		valid.append(i)
# print(valid)

# xrep = []
# yrep = []

# for i in range(n):
# 	for j in range(freq[i]):
# 		xrep.append(x[i])
# 		yrep.append(y[i])

# n1 = len(xrep)

# cd = 0
# for k in range(n):
# 	cd += (abs(xrep[n1//2]-x[k])+ abs(yrep[n1//2]-y[k]))*freq[k]

# print(cd)
# print((xrep[n1//2],yrep[n1//2]))




from sys import stdin
input = stdin.readline
 
def help():
	n = int(input())
	print(*list(range(1,n+1)))
 
for _ in range(int(input())):
	help()