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 JAVA):

Solution:
import java.util.*;
import java.io.*;
public class R635D3D {

	public static void main(String[] args) throws Exception{
		int num = 998244353;
		// TODO Auto-generated method stub
 		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
 		int t = Integer.parseInt(bf.readLine());
 		
 		for(int i = 0;i<t;i++){
 			StringTokenizer st = new StringTokenizer(bf.readLine());
 			int n = Integer.parseInt(st.nextToken());
 			int k = Integer.parseInt(st.nextToken());
 			int[] array = new int[n];
 			int[] prefix = new int[2*k+2];
 			
 			Map<Integer, Integer> sumalready = new HashMap<Integer, Integer>();
 			StringTokenizer st1 = new StringTokenizer(bf.readLine());
 			for(int j = 0;j<n;j++){
 				array[j] = Integer.parseInt(st1.nextToken());
 			}
 			
 			for(int j = 0;j<n/2;j++){
 				int sum = array[j] + array[n-j-1];
 				int ks = Math.min(array[j], array[n-j-1]);
 				int ky = Math.max(array[j], array[n-j-1]);
 				if (sumalready.containsKey(sum))
 					sumalready.put(sum, sumalready.get(sum)+1);
 				else
 					sumalready.put(sum, 1);
 				
 				prefix[ks+1]+=1;
 				
 				prefix[ky+k+1]-=1;
 			}
 			
 			int[] prefixsum = new int[2*k+1];
 			int totalsum = 0;
 			for(int j = 0;j<2*k+1;j++){
 				totalsum+= prefix[j];
 				prefixsum[j] = totalsum;
 			}
 			
 			int minchanges = Integer.MAX_VALUE;
 			
 			for(int j = 2;j<=2*k;j++){
 				int zerochanges;
 				if (sumalready.containsKey(j))
 					zerochanges = sumalready.get(j);
 				else
 					zerochanges = 0;
 				int onechange = prefixsum[j] - zerochanges;
 				int twochange = n/2-onechange-zerochanges;
 				if (onechange+2*twochange < minchanges)
 					minchanges = onechange+2*twochange;
 			}
 			System.out.println(minchanges);
 			
 			
 			
 			

 		}
 		
 		
	}

}