#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 100;
struct node {
  int flag, a, b;
  long long sum;
} t[maxn * 8];
int a[maxn], cnt[maxn * 2], js[maxn * 2];
void pushdown(int x, int l, int r) {
  if (t[x].flag) {
    int num = t[x].flag;
    t[2 * x].sum += num * l;
    t[2 * x + 1].sum += num * r;
    t[2 * x].flag += num;
    t[2 * x + 1].flag += num;
    t[x].flag = 0;
  }
}
int ask(int x, int l, int r, int pos) {
  int mid;
  if (l == r) {
    return t[x].sum;
  }
  mid = (l + r) / 2;
  pushdown(x, mid - l + 1, r - mid);
  if (pos <= mid)
    return ask(2 * x, l, mid, pos);
  else
    return ask(2 * x + 1, mid + 1, r, pos);
}
void add(int x, int l, int r, int ql, int qr, int val) {
  int mid;
  if (ql == l && qr == r) {
    t[x].flag += val;
    t[x].sum += (qr - ql + 1);
    return;
  }
  mid = (l + r) / 2;
  pushdown(x, mid - l + 1, r - mid);
  if (qr <= mid) {
    add(2 * x, l, mid, ql, qr, val);
  } else {
    if (ql > mid)
      add(2 * x + 1, mid + 1, r, ql, qr, val);
    else {
      add(2 * x, l, mid, ql, mid, val);
      add(2 * x + 1, mid + 1, r, mid + 1, qr, val);
    }
  }
  t[x].sum = t[2 * x].sum + t[2 * x + 1].sum;
}
void build(int x, int l, int r) {
  int mid;
  t[x].flag = 0;
  t[x].sum = 0;
  if (l == r) {
    return;
  }
  mid = (l + r) / 2;
  build(2 * x, l, mid);
  build(2 * x + 1, mid + 1, r);
}
int top;
node s[maxn];
int cmp(node a, node b) { return a.sum < b.sum; }
int main() {
  node e;
  int T, n, flag, ans, k, up;
  scanf("%d", &T);
  while (T--) {
    scanf("%d%d", &n, &k);
    for (int i = 1; i <= 2 * k; i++) {
      cnt[i] = 0;
      js[i] = 0;
    }
    build(1, 1, k * 2);
    for (int i = 1; i <= n; i++) {
      scanf("%d", &a[i]);
    }
    if (n == 2) {
      printf("0\n");
      continue;
    }
    top = 0;
    if (n % 2)
      up = n / 2 + 1;
    else
      up = n / 2;
    for (int i = 1; i <= up; i++) {
      e.a = a[i];
      e.b = a[n - i + 1];
      if (e.a > e.b) swap(e.a, e.b);
      e.sum = e.a + e.b;
      s[++top] = e;
      js[e.sum]++;
    }
    sort(s + 1, s + top + 1, cmp);
    int last = 0;
    ans = n;
    for (int i = 1; i <= top; i++) {
      e = s[i];
      if (e.sum == last) {
        add(1, 1, 2 * k, e.a + 1, e.b + k, 1);
        continue;
      }
      cnt[e.sum] += n / 2 - js[e.sum] + i - 1 - ask(1, 1, 2 * k, e.sum);
      add(1, 1, 2 * k, e.a + 1, e.b + k, 1);
      last = e.sum;
    }
    for (int i = 1; i <= top / 2; i++) {
      swap(s[i], s[top - i + 1]);
    }
    build(1, 1, k * 2);
    last = 0;
    ans = n;
    for (int i = 1; i <= top; i++) {
      e = s[i];
      if (e.sum == last) {
        add(1, 1, 2 * k, e.a + 1, e.b + k, 1);
        continue;
      }
      cnt[e.sum] += i - 1 - ask(1, 1, 2 * k, e.sum);
      ans = min(ans, cnt[e.sum]);
      add(1, 1, 2 * k, e.a + 1, e.b + k, 1);
      last = e.sum;
    }
    for (int i = 1; i <= 2 * k; i++) {
      if (js[i]) continue;
      ans = min(ans, n - ask(1, 1, 2 * k, i));
    }
    printf("%d\n", ans);
  }
  return 0;
}
