根据题意,首先考虑一下输出“NO”的情况:

由于前n/2个数字是偶数,后n/2个数字是奇数,我们发现若n/2是奇数,那么n/2个奇数相加也是奇数,而前面n/2个偶数相加一定是偶数,不满足题目对数组a的第三个条件即前 n/2​ 个数的元素之和等于后 n/2个数的元素之和,因此此时一定无法找到满足题意的数组。

构造输出“YES”的情况:

由于第四个条件要求a[i]不能重复,参考题目样例的构造方法,那么我们可以构造形如“2 4 6 ... n 1 3 5 ... n-3 n-1”,但是这样不满足题目的第三个要求,于是,我们考虑把前n/2个数与后n/2个数的差值全加到最后一个数字上即可(显然最后一个数加上某个偶数也不会破坏a[i]的其他条件),而且我们发现这个差值刚好是n/2(因为第i个数和第i+n/2个数都差1,一共有n/2对,1<=i<=n/2)。

#include <iostream>

using i64 = long long;

void solve(){
  int n;
  std::cin >> n;
  
  if((n/2)&1){//判断n/2是否为奇数
    std::cout << "NO\n";
    return;
  }

  std::cout << "YES\n";

  //输出 2 4 ... n
  for(int i = 1; i <= n/2; i++){
    std::cout << i*2 << " ";
  }
  //输出 1 3 ... n-3 (n-1+n/2)
  for(int i = 1; i <= n/2; i++){
    if(i != n/2){
      std::cout << i*2-1 << " ";
    }else{
      std::cout << i*2-1+n/2 << "\n";
    }
  }
}

int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  std::cout.tie(nullptr);

  int T = 1;
  std::cin >> T;

  for(; T--;){
    solve();
  }
}