A permutation of length n is an array p=[p_1,p_2,...,p_n], which contains every integer from 1 to n (inclusive) and, moreover, each number appears exactly once. For example, p=[3,1,4,2,5] is a permutation of length 5.

For a given number n (n ≥ 2), find a permutation p in which absolute difference (that is, the absolute value of difference) of any two neighboring (adjacent) elements is between 2 and 4, inclusive. Formally, find such permutation p that 2 ≤ |p_i - p_{i+1}| ≤ 4 for each i (1 ≤ i < n).

Print any such permutation for the given integer n or determine that it does not exist.

Input

The first line contains an integer t (1 ≤ t ≤ 100) — the number of test cases in the input. Then t test cases follow.

Each test case is described by a single line containing an integer n (2 ≤ n ≤ 1000).

Output

Print t lines. Print a permutation that meets the given requirements. If there are several such permutations, then print any of them. If no such permutation exists, print -1.

Example

Input


6
10
2
4
6
7
13


Output


9 6 10 8 4 7 3 1 5 2 
-1
3 1 4 2 
5 3 6 2 4 1 
5 1 3 6 2 4 7 
13 9 7 11 8 4 1 3 5 2 6 10 12 
#include <bits/stdc++.h>
using namespace std;
const int64_t X = 1e9 + 7;
const int64_t inf = 1e18;
void google(int64_t i) { cout << "Case #" << i << ": "; }
void prec(double n, int64_t d) {
  cout << fixed << setprecision(d) << n << "\n";
}
int64_t prime[1000001];
void sieve(int64_t n) {
  for (int64_t i = 0; (0 <= n + 1) ? (i < n + 1) : (i >= n + 1);
       (0 <= n + 1) ? (i++) : (i--))
    prime[i] = 1;
  for (int64_t i = 2; i * i <= n; i++) {
    if (prime[i] != 1) continue;
    for (int64_t j = i * i; j <= n; j = j + i)
      if (prime[j] == 1) prime[j] = i;
  }
}
int64_t gcd(int64_t a, int64_t b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
int64_t bin(int64_t a, int64_t n, int64_t m) {
  int64_t res = 1;
  while (n) {
    if (n % 2) {
      res = (res * a) % m;
      n--;
    }
    a = (a * a) % m;
    n /= 2;
  }
  return res;
}
void dijktra(vector<pair<int64_t, int64_t>> g[], int64_t n) {
  priority_queue<pair<int64_t, int64_t>, vector<pair<int64_t, int64_t>>,
                 greater<pair<int64_t, int64_t>>>
      pq;
  vector<int64_t> dist(n, inf);
  dist[0] = 0;
  int64_t parent[n];
  memset(parent, -1, sizeof(parent));
  pq.push({0, 0});
  while (!pq.empty()) {
    pair<int64_t, int64_t> x = pq.top();
    pq.pop();
    for (int64_t i = 0; (0 <= (int64_t)g[x.second].size())
                            ? (i < (int64_t)g[x.second].size())
                            : (i >= (int64_t)g[x.second].size());
         (0 <= (int64_t)g[x.second].size()) ? (i++) : (i--)) {
      pair<int64_t, int64_t> k = g[x.second][i];
      if (dist[x.second] + k.first < dist[k.second]) {
        dist[k.second] = dist[x.second] + k.first;
        parent[k.second] = x.second;
        pq.push({dist[k.second], k.second});
      }
    }
  }
}
void bfs(int64_t s, vector<int64_t> g[], int64_t n) {
  bool vis[n];
  for (int64_t i = 0; (0 <= n) ? (i < n) : (i >= n); (0 <= n) ? (i++) : (i--))
    vis[i] = false;
  vis[s] = true;
  deque<int64_t> q;
  q.push_back(s);
  while (!q.empty()) {
    s = q.front();
    q.pop_front();
    for (int64_t i = 0; i < (int64_t)g[s].size(); i++) {
      if (!vis[g[s][i]]) {
        vis[g[s][i]] = true;
        q.push_back(g[s][i]);
      }
    }
  }
}
void dfs(int64_t u, vector<int64_t> g[], bool *vis) {
  vis[u] = true;
  for (int64_t i = 0; i < (int64_t)g[u].size(); i++)
    if (!vis[g[u][i]]) dfs(g[u][i], g, vis);
}
void create_w(vector<pair<int64_t, int64_t>> *g, int64_t m) {
  for (int64_t i = 0; (0 <= m) ? (i < m) : (i >= m); (0 <= m) ? (i++) : (i--)) {
    int64_t u, vector, w;
    cin >> u >> vector >> w;
    g[u - 1].push_back({w, vector - 1});
    g[vector - 1].push_back({w, u - 1});
  }
}
void create(vector<int64_t> *g, int64_t m) {
  for (int64_t i = 0; (0 <= m) ? (i < m) : (i >= m); (0 <= m) ? (i++) : (i--)) {
    int64_t u, vector;
    cin >> u >> vector;
    g[u - 1].push_back(vector - 1);
    g[vector - 1].push_back(u - 1);
  }
}
void contest(int64_t t) {
  int64_t n;
  cin >> n;
  if (n <= 3) {
    cout << "-1"
         << "\n";
    return;
  }
  for (int64_t i = n; (n <= 1) ? (i < 1) : (i >= 1); (n <= 1) ? (i++) : (i--)) {
    if (i & 1) cout << i << " ";
  }
  cout << "4 2 ";
  for (int64_t i = 6; (6 <= n + 1) ? (i < n + 1) : (i >= n + 1);
       (6 <= n + 1) ? (i++) : (i--)) {
    if (i % 2 == 0 && i <= n) cout << i << " ";
  }
  cout << "\n";
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int64_t T = 1;
  cin >> T;
  for (int64_t t = 0; (0 <= T) ? (t < T) : (t >= T); (0 <= T) ? (t++) : (t--)) {
    contest(t);
  }
  return 0;
}
