#include <bits/stdc++.h>
using namespace std;
const int maxn = 555;
int ori[maxn];
vector<int> ans;
int n;
inline void show() {
  for (int i = 1; i <= n; i++) cout << ori[i] << " ";
  cout << endl;
}
inline void move(int x) {
  if (ans.size() >= 2 && ans[ans.size() - 1] == x && ans[ans.size() - 2] == x) {
    ans.pop_back();
    ans.pop_back();
  } else
    ans.push_back(x);
  int temp = ori[x + 2];
  ori[x + 2] = ori[x + 1];
  ori[x + 1] = ori[x];
  ori[x] = temp;
}
void go(int head, int pos) {
  while (head <= pos - 2) {
    move(pos - 2);
    pos -= 2;
  }
  while (head < pos) {
    move(pos - 1);
    move(pos - 1);
    pos--;
  }
}
void gor(int head, int pos) {
  while (pos < head) {
    move(pos);
    move(pos);
    pos += 2;
  }
}
void solve() {
  ans.clear();
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &ori[i]);
  for (int head = 1; head <= n - 2; head++) {
    int pos = head;
    for (int i = head + 1; i <= n; i++) {
      if (ori[pos] > ori[i]) pos = i;
    }
    go(head, pos);
  }
  if (ori[n - 1] > ori[n]) {
    if (ori[n] == ori[n - 2])
      go(n - 2, n);
    else {
      int head = -1;
      for (int i = 2; i <= n - 2; i++) {
        if (ori[i - 1] == ori[i]) {
          head = i;
          break;
        }
      }
      if (head == -1) {
        puts("-1");
        return;
      }
      if ((n - head) % 2 == 0) {
        go(head, n);
        move(head - 1);
        move(head - 1);
        gor(n - 1, head - 1);
      } else {
        go(head, n - 1);
        move(head - 1);
        gor(n, head + 1);
      }
    }
  }
  cout << ans.size() << endl;
  for (int aa : ans) cout << aa << " ";
  cout << endl;
}
signed main() {
  int T;
  cin >> T;
  while (T--) solve();
}
