#include <bits/stdc++.h>
const int MAX_LEN = 1010;
using namespace std;
template <typename U, typename V>
string to_string(pair<U, V>);
string to_string(const string& e_) { return "\"" + e_ + "\""; }
string to_string(char e_) { return "\'" + string(1, e_) + "\'"; }
string to_string(bool e_) { return e_ ? "true" : "false"; }
template <typename T>
string to_string(T e_) {
  string s_ = "[ ";
  for (const auto& x_ : e_) s_ += to_string(x_) + " ";
  return s_ + "]";
}
template <typename U, typename V>
string to_string(pair<U, V> e_) {
  return "(" + to_string(e_.first) + ", " + to_string(e_.second) + ")";
}
void dbg_str() { ; }
template <typename U, typename... V>
void dbg_str(U u, V... v) {
  ;
  dbg_str(v...);
}
const int N = 200100;
int t, n, k;
int a[N];
int main() {
  scanf("%d", &t);
  while (t--) {
    map<int, int> sumfreq;
    vector<int> already;
    scanf("%d %d", &n, &k);
    already.assign(2 * k + 2, 0);
    int mn = 1e9;
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    for (int i = 1; i <= n / 2; i++) {
      sumfreq[a[i] + a[n - i + 1]]++;
      int mn1 = a[i] + 1;
      int mn2 = a[n - i + 1] + 1;
      int mx1 = a[i] + k;
      int mx2 = a[n - i + 1] + k;
      already[min(mn1, mn2)]++;
      already[max(mx1, mx2) + 1]--;
    }
    for (int i = 2; i <= 2 * k + 1; i++) {
      already[i] += already[i - 1];
    }
    for (int i = 2; i <= 2 * k; i++) {
      mn = min(mn, (already[i] - sumfreq[i]) + (n / 2 - already[i]) * 2);
    }
    printf("%d\n", mn);
  }
}
