Problem: You are given a positive integer n, it is guaranteed that n is even (i.e. divisible by 2).

You want to construct the array a of length n such that: 

  * The first n/2 elements of a are even (divisible by 2); 
  * the second n/2 elements of a are odd (not divisible by 2); 
  * all elements of a are distinct and positive; 
  * the sum of the first half equals to the sum of the second half (∑_{i=1}^{n/2} a_i = ∑_{i=n/2 + 1}^{n} a_i). 



If there are multiple answers, you can print any. It is not guaranteed that the answer exists.

You have to answer t independent test cases.

Input

The first line of the input contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases. Then t test cases follow.

The only line of the test case contains one integer n (2 ≤ n ≤ 2 ⋅ 10^5) — the length of the array. It is guaranteed that that n is even (i.e. divisible by 2).

It is guaranteed that the sum of n over all test cases does not exceed 2 ⋅ 10^5 (∑ n ≤ 2 ⋅ 10^5).

Output

For each test case, print the answer — "NO" (without quotes), if there is no suitable answer for the given test case or "YES" in the first line and any suitable array a_1, a_2, ..., a_n (1 ≤ a_i ≤ 10^9) satisfying conditions from the problem statement on the second line.

Example

Input


5
2
4
6
8
10


Output


NO
YES
2 4 1 5
NO
YES
2 4 6 8 1 3 5 11
NO

Solution (in PYTHON3):

Solution:
#qn given an arr of size n for every  i position find a min j such that j>i and arr[j]>arr[i]
#it prints the position of the nearest .
import sys
input = sys.stdin.readline
 #qn given an arr of size n for every  i position find a min j such that j>i and arr[j]>arr[i]
#it prints the position of the nearest .
# import sys
import heapq 
import copy
import math
#heapq.heapify(li) 
#
#heapq.heappush(li,4) 
#
#heapq.heappop(li)
#
# &	Bitwise AND Operator	10 & 7 = 2
# |	Bitwise OR Operator	10 | 7 = 15
# ^	Bitwise XOR Operator	10 ^ 7 = 13

# <<	Bitwise Left Shift operator	10<<2 = 40
# >>	Bitwise Right Shift Operator
############ ---- Input Functions ---- #######Start#####
def inp():
	return(int(input()))
def inlt(): 
	return(list(map(int,input().split())))
def insr():
	s = input()
	return(list(s[:len(s) - 1]))
def invr():
	return(map(int,input().split()))
 ############ ---- Input Functions ---- #######End#####   
def bin_search(arr,l,r,val):#strickly greater
	if arr[r] <= val:
		return r+1	
	if r-l < 2:
		if arr[l]>val:
			return l
		else:
			return r
	mid = int((l+r)/2)
	if arr[mid] <= val:
		return bin_search(arr,mid,r,val)
	else:
		return bin_search(arr,l,mid,val)

def pr_list(a):
	print(*a, sep=" ")
def main():
	tests =  inp()
	mod = 1000000007
	limit = 10**18
	# print(limit)
	for test in range(tests):
		[n,k] =  inlt()
		a = inlt()
		mini = [0 for i in range(2*k+1)]
		maxi = [0 for i in range(2*k+1)]
		freq = [0 for i in range(2*k+1)]
		for i in range(int(n/2)):
			mini[min(a[i],a[n-i-1])+1] +=1
			maxi[max(a[i],a[n-i-1]) + k] +=1
			freq[a[i]+ a[n-i-1]] +=1
		# print(mini)
		# print(maxi)
		# print(freq)
		# maxi =[0] + maxi
		for i in range(1,2*k+1):
			maxi[i] =maxi[i] + maxi[i-1]
		for i in range(2*k-1,-1,-1):
			mini[i] = mini[i+1]+mini[i]
		mini.append(0)
		# print(mini)
		# print(maxi)
		# print(freq)
		ans = sys.maxsize
		
		for i in range(1,2*k+1):
			ans = min(ans,int(n/2) - freq[i] + mini[i+1]+ maxi[i-1])
		print(ans) 			






	return 0


# if for two position i,j such that j<i and arr[j]>arr[i] I wont need to store the position i as I wont requre it for any further computation. I cound simply use i instead of j.
#to do that i main tain a stack which is initiallized with the last elment and I traverse the arr backwords because for any ith entry the answer does not depends on 0 to i-1.
# for every element I would continue to pop the stack (from last) till i recieve an elemnt larger than current one. The elemnt which i poped are not needed as i could use current elemnt.
# the order is n as an element only enters the stack ones.
if __name__== "__main__":
  main()