#include <bits/stdc++.h>
using namespace std;
template <typename T>
using minpq = priority_queue<T, vector<T>, greater<T>>;
const int INF = 1005000000;
const long long MOD = 1000000007LL;
int ni() {
  int x;
  cin >> x;
  return x;
}
long long nl() {
  long long x;
  cin >> x;
  return x;
}
double nd() {
  double x;
  cin >> x;
  return x;
}
string next() {
  string x;
  cin >> x;
  return x;
}
int search(vector<int> &nums, int i) {
  return find((nums).begin(), (nums).end(), i) - nums.begin();
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int Q = ni();
  for (int q = 0; q < (Q); q++) {
    int N = ni();
    vector<int> nums(N);
    for (int i = 0; i < (N); i++) nums[i] = ni();
    bool good = true;
    for (int i = 1; i <= N; i++) {
      int n = nums[i - 1];
      if ((n % 2) != (i % 2)) {
        good = false;
        break;
      }
    }
    if (!good) {
      cout << "-1\n";
      continue;
    }
    vector<int> ops;
    for (int i = N - 1; i >= 2; i -= 2) {
      int even = search(nums, i);
      int odd = search(nums, i + 1);
      ops.push_back(odd);
      reverse(nums.begin(), nums.begin() + odd + 1);
      even = search(nums, i);
      odd = search(nums, i + 1);
      ops.push_back(even - 1);
      reverse(nums.begin(), nums.begin() + even);
      even = search(nums, i);
      odd = search(nums, i + 1);
      ops.push_back(even + 1);
      reverse(nums.begin(), nums.begin() + even + 2);
      ops.push_back(2);
      reverse(nums.begin(), nums.begin() + 3);
      ops.push_back(i);
      reverse(nums.begin(), nums.begin() + i + 1);
    }
    cout << ((int)(ops).size()) << '\n';
    for (int n : ops) cout << n + 1 << ' ';
    cout << '\n';
  }
}
