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:
class ST:
    def __init__(self, arr):
        self.n = len(arr)
        self.a = [0]*(2*self.n)
        self.func = lambda a,b: a+b

    def rangequery(self, l, r):
        res = 0
        l += self.n
        r += self.n
        while l < r:
            if l & 1:
                res += self.a[l]
                l += 1
            if r & 1:
                r -= 1
                res += self.a[r]
            l = l >> 1
            r = r >> 1
        return res

    def pointupdate(self, x, val):
        i = x + self.n
        while i:
            self.a[i] += val
            i = i >> 1

    def pointquery(self, x):
        res = 0
        i = x + self.n
        while i:
            res += self.a[i]
            i >>= 1
        return res

    def rangeupdate(self, l, r, val):
        r += 1
        l += self.n
        r += self.n
        while l < r:
            if l & 1:
                self.a[l] += val
                l += 1
            if r & 1:
                r -= 1
                self.a[r] += val
            l = l >> 1
            r = r >> 1



# ------------------- fast io --------------------
import os
import sys
from io import BytesIO, IOBase

BUFSIZE = 8192


class FastIO(IOBase):
    newlines = 0

    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None

    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()

    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()

    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)


class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")


sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")

# ------------------- fast io --------------------
for _ in range(int(input())):
    n, k = map(int, input().split())
    a = list(map(int, input().split()))
    i, j = 0, n - 1
    arr = [0] * (2 * k + 1)
    st = ST(arr)
    di = {}
    while i < j:
        mi, ma = min(a[i], a[j]), max(a[i], a[j])
        s = str(mi) + "," + str(ma)
        di[s] = 1 if s not in di else di[s] + 1
        i += 1
        j -= 1
    for each in di:
        mi, ma = [int(k) for k in each.split(",")]
        total = mi + ma
        st.rangeupdate(0, mi, 2 * di[each])
        st.rangeupdate(mi + 1, total - 1, 1 * di[each])
        if total != 2 * k:
            st.rangeupdate(total + 1, ma + k, 1 * di[each])
        if ma != k:
            st.rangeupdate(ma + k + 1, 2 * k, 2 * di[each])

    print(min([st.pointquery(k) for k in range(2 * k + 1)]))