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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

public class d {
    static BufferedReader s = new BufferedReader(new InputStreamReader(System.in));
    public static void main(String[] args) throws IOException {
        StringBuilder sb=new StringBuilder();
        String[] s=s();
        int t=i(s[0]);
        while(t-->0){
          String[] s1=s();
            int n=i(s1[0]);
            int k=i(s1[1]);
        //    int[] count=new int[5*100000];
            HashMap<Integer,Integer> count=new HashMap<>();
            int[] a=new int[n];
            String[] s2=s();
            for(int i=0;i<n;i++) a[i]=i(s2[i]);
            long max=0;
            int[] val=new int[n/2];
            long sum=0;
            int [] mini=new int[2*k+2];
            int[] maxi=new int[2*k+2];int value=0;
            for(int i=0;i<n/2;i++){
                 count.put(a[i]+a[n-i-1], count.getOrDefault(a[i]+a[n-i-1],0)+1);
                  mini[Math.max(2,a[i]+a[n-i-1]-Math.max(a[i],a[n-i-1])+1)]++;
                maxi[Math.min(2*k+1,a[i]+a[n-i-1]-Math.min(a[i],a[n-i-1])+k+1)]++;


                  if( a[i]+a[n-i-1]!=sum){
                      sum= a[i]+a[n-i-1];
                  }
                 max=Math.max(max,count.get(a[i]+a[n-i-1]));
                  val[i]=a[i]+a[n-i-1];
             }


             long ans=Integer.MAX_VALUE;

            for(int i=2;i<=2*k;i++){
           //     System.out.println(i+" "+mini[i]+" "+maxi[i]+" "+value);
         //      if(count.containsKey(i)) System.out.println(i+" "+count.get(i));
              //  value=0;
                if(mini[i]>0){
                  //  value+=mini[i];
                    if(count.containsKey(i))
                        value+=(mini[i]);
                      else value+=mini[i];
                }
                if(maxi[i]>0){
                    value-=maxi[i];
                }
                if(count.containsKey(i)) value-=count.get(i);
                if(count.containsKey(i)){
                    ans=Math.min(ans,value+2*(n/2-(count.get(i))-value));
                }else
                    ans=Math.min(ans,value+2*(n/2-value));
                if(count.containsKey(i)) value+=count.get(i);
                if(ans==3){
                 //   System.out.println(maxi[i]+" "+mini[i]+" "+i+" "+value+" "+"JI");
                }
            }


          /*  for(int i=0;i<n/2;i++){
                 if(a[i]+a[n-i-1]!=sum){
                     if(sum>a[i]+a[n-i-1]){
                         long x=a[i]+a[n-i-1];
                         if(x-Math.min(a[i],a[n-i-1])+k>=sum){
                             ans+=1;
                         }else{
                             ans+=2;
                         }
                     }
                     else{
                         long x=a[i]+a[n-i-1];
                         if(x-Math.max(a[i],a[n-i-1])<sum&&x-Math.max(a[i],a[n-i-1])+k>=sum){
                             ans+=1;
                         }else ans+=2;
                     }
                 }
             }*///sb.append(ans+"\n");

             /*
             Arrays.sort(val);long ans=Long.MAX_VALUE;
             for(int i=0;i<n/2;i++){
                // System.out.println(val[i]);
                 int low=0;int high=i-1;
                 int x=-1;
                 while(low<=high){
                     int mid=(low+high)/2;
                     if(val[mid]<=val[i]/2){
                         x=mid;
                         low=mid+1;
                     }else{
                         high=mid-1;
                     }
                 }long hu=2*(x+1);
                 long j=x+1;


                 low=i+1;high=n/2-1;x=n;
                 while(low<=high){
                     int mid=(low+high)/2;
                     if(val[mid]>=2*val[i]){
                         x=mid;
                         high=mid-1;
                     }else{
                         low=mid+1;
                     }
                 }
                 hu+=2*(n-x);
                //System.out.println(i+" "+count[val[i]]+" "+j+" "+(n-x)+" "+hu );
                 hu+=(n/2-count[val[i]]-j-(n-x));
                // System.out.println(hu);
                 ans=Math.min(ans,hu);
             }
             */
            /* if(max==1) sb.append(Math.min(ans,n/2)+"\n");else
             sb.append(Math.min(ans,n/2)+"\n");*/
            sb.append(ans+"\n");
        }
        System.out.println(sb.toString());
        }
        static String[] s() throws IOException {
        return s.readLine().trim().split("\\s+");
    }
    static int i(String ss) {
        return Integer.parseInt(ss);
    }
    static long l(String ss) {
        return Long.parseLong(ss);
    }
}