思路:思维题,首先有一个特判可以注意到:令k = n // 2,如果此时k是奇数,那么数组左边是奇数个偶数和,结果为偶数;数组右边是奇数个奇数和,结果为奇数。因此,左右两边的和不可能相等,直接输出"NO"即可

然后我们就可以往左边填偶数,从2开始填,形成一个等差数列,其求和公式为k * (1 + k),结果令为s。右边就可以从1开始填奇数,然后s减去对应的奇数,这样做的好处就是每次填的奇数都比对应位置的偶数少1,那么我们只需要填k - 1位,最终第k位就填剩下的s即可,它必然为奇数。并且由于题目说了n的规模远小于ai的规模,所以说这样填不会超过ai的最大值,最终拼接起来,输出"YES"和ans数组即可

代码:

import sys
input = lambda: sys.stdin.readline().strip()

import math
inf = 10 ** 18

def I():
    return input()

def II():
    return int(input())

def MII():
    return map(int, input().split())

def GMI():
    return map(lambda x: int(x) - 1, input().split())

def LI():
    return input().split()

def LII():
    return list(map(int, input().split()))

def LFI():
    return list(map(float, input().split()))

fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))

'''

'''

def solve():
    n = II()
    if n >> 1 & 1:
        print("NO")
        return

    k = n // 2
    s = k * (1 + k)
    evens = list(range(2, 2 * k + 1, 2))

    olds = []
    old = 1
    for i in range(k - 1):
        olds.append(old)
        s -= old
        old += 2
    olds.append(s)

    ans = evens + olds
    print("YES")
    print(*ans)

# t = 1
t = II()
for _ in range(t):
    solve()