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 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;

public class cf_640_Div4 {

	static class Reader {

		final private int BUFFER_SIZE = 1 << 12;
		boolean consume = false;
		private byte[] buffer;
		private int bufferPointer, bytesRead;
		private boolean reachedEnd = false;

		public Reader() {
			buffer = new byte[BUFFER_SIZE];
			bufferPointer = 0;
			bytesRead = 0;
		}

		public boolean hasNext() {
			return !reachedEnd;
		}

		private void fillBuffer() throws IOException {
			bytesRead = System.in.read(buffer, bufferPointer = 0, BUFFER_SIZE);
			if (bytesRead == -1) {
				buffer[0] = -1;
				reachedEnd = true;
			}
		}

		private void consumeSpaces() throws IOException {
			while (read() <= ' ' && reachedEnd == false)
				;
			bufferPointer--;
		}

		private byte read() throws IOException {
			if (bufferPointer == bytesRead) {
				fillBuffer();
			}
			return buffer[bufferPointer++];
		}

		public String next() throws IOException {
			StringBuilder sb = new StringBuilder();
			consumeSpaces();
			byte c = read();
			do {
				sb.append((char) c);
			} while ((c = read()) > ' ');
			if (consume) {
				consumeSpaces();
			}
			;
			if (sb.length() == 0) {
				return null;
			}
			return sb.toString();
		}

		public String nextLine() throws IOException {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String str = br.readLine();
			return str;
		}

		public int nextInt() throws IOException {
			consumeSpaces();
			int ret = 0;
			byte c = read();
			boolean neg = (c == '-');
			if (neg) {
				c = read();
			}
			do {
				ret = ret * 10 + c - '0';
			} while ((c = read()) >= '0' && c <= '9');
			if (consume) {
				consumeSpaces();
			}
			if (neg) {
				return -ret;
			}
			return ret;
		}

		public long nextLong() throws IOException {
			consumeSpaces();
			long ret = 0;
			byte c = read();
			boolean neg = (c == '-');
			if (neg) {
				c = read();
			}
			do {
				ret = ret * 10L + c - '0';
			} while ((c = read()) >= '0' && c <= '9');
			if (consume) {
				consumeSpaces();
			}
			if (neg) {
				return -ret;
			}
			return ret;
		}

		public double nextDouble() throws IOException {
			consumeSpaces();
			double ret = 0;
			double div = 1;
			byte c = read();
			boolean neg = (c == '-');
			if (neg) {
				c = read();
			}
			do {
				ret = ret * 10 + c - '0';
			} while ((c = read()) >= '0' && c <= '9');
			if (c == '.') {
				while ((c = read()) >= '0' && c <= '9') {
					ret += (c - '0') / (div *= 10);
				}
			}
			if (consume) {
				consumeSpaces();
			}
			if (neg) {
				return -ret;
			}
			return ret;
		}

		public int[] nextIntArray(int n) throws IOException {
			int[] a = new int[n];
			for (int i = 0; i < n; i++) {
				a[i] = nextInt();
			}
			return a;
		}

		public int[][] nextIntMatrix(int n, int m) throws IOException {
			int[][] grid = new int[n][m];
			for (int i = 0; i < n; i++) {
				grid[i] = nextIntArray(m);
			}
			return grid;
		}

		public char[][] nextCharacterMatrix(int n) throws IOException {
			char[][] a = new char[n][];
			for (int i = 0; i < n; i++) {
				a[i] = next().toCharArray();
			}
			return a;
		}

		public void close() throws IOException {
			if (System.in == null) {
				return;
			} else {
				System.in.close();
			}
		}
	}

	static Reader r = new Reader();
	static PrintWriter out = new PrintWriter(System.out);

	private static void solve1() throws IOException {

		int t = r.nextInt();
		StringBuilder res = new StringBuilder();

		while (t-- > 0) {

			String s = r.next();

			ArrayList<String> arr = new ArrayList<>();
			for (int i = 0; i < s.length(); i++) {
				if (s.charAt(i) != '0') {
					String te = s.charAt(i) + "";
					for (int j = 1; j <= s.length() - i - 1; j++) {
						te += "0";
					}
					arr.add(te);
				}
			}

			res.append(arr.size()).append("\n");
			for (int i = 0; i < arr.size(); i++) {
				res.append(arr.get(i) + " ");
			}
			res.append("\n");

		}

		out.print(res);
		out.close();
	}

	private static void solve2() throws IOException {

		int t = r.nextInt();
		StringBuilder res = new StringBuilder();

		while (t-- > 0) {

			int n = r.nextInt();
			int k = r.nextInt();

			if (k > n) {
				res.append("NO");
			} else {
				if (k == n) {
					res.append("YES").append("\n");
					for (int i = 1; i <= k; i++) {
						res.append(1).append(" ");
					}
				} else {
					if (n % 2 == 0) {
						int temp = n - ((k - 1) * 2);
						if ((temp % 2) == (n % 2) && ((k - 1) * 2) < n && ((k - 1) * 2) > 0) {
							res.append("YES").append("\n");
							for (int i = 1; i <= k - 1; i++) {
								res.append(2).append(" ");
							}
							res.append(temp);
						} else {
							res.append("NO");
						}
					} else {
						int temp = n - ((k - 1) * 1);
						if ((temp % 2) == (n % 2) && ((k - 1) * 1) < n && ((k - 1) * 2) > 0) {
							res.append("YES").append("\n");
							for (int i = 1; i <= k - 1; i++) {
								res.append(1).append(" ");
							}
							res.append(temp);
						} else {
							res.append("NO");
						}
					}
				}
			}
			res.append("\n");

		}

		out.print(res);
		out.close();

	}

	private static void solve3() throws IOException {

		int t = r.nextInt();
		StringBuilder res = new StringBuilder();

		while (t-- > 0) {

			int n = r.nextInt();
			int k = r.nextInt();

			int times = (k / (n - 1));
			int num = times * (n - 1);
			int ans = n * times;
			int rem = k - num;
			if (num == k) {
				rem = 0;
				ans--;
			}
			ans += rem;

			res.append(ans).append("\n");
		}

		out.print(res);
		out.close();
	}

	private static void solve4() throws IOException {

		int t = r.nextInt();
		StringBuilder res = new StringBuilder();

		while (t-- > 0) {

			int n = r.nextInt();
			int arr[] = r.nextIntArray(n);

			int al = arr[0], bob = 0, ans = 1, prev = arr[0];

			int i = 1, j = n - 1;
			int flag = 0;

			while (i <= j && i < n && j >= 0) {
				boolean fl = false;
				if (flag == 0) {
					int sum = 0;
					for (int k = j; k >= i; k--) {
						sum += arr[k];
						if (sum > prev) {
							bob += sum;
							prev = sum;
							j = k - 1;
							fl = true;
							flag = 1;
							break;
						}
					}
					if (!fl) {
						bob += sum;
						ans++;
						break;
					}
				} else {
					int sum = 0;
					for (int k = i; k <= j; k++) {
						sum += arr[k];
						if (sum > prev) {
							al += sum;
							prev = sum;
							i = k + 1;
							fl = true;
							flag = 0;
							break;
						}
					}
					if (!fl) {
						al += sum;
						ans++;
						break;
					}
				}
				ans++;
			}

			res.append(ans + " " + al + " " + bob).append("\n");
		}

		out.print(res);
		out.close();

	}

	private static void solve5() throws IOException {

		int t = r.nextInt();
		StringBuilder res = new StringBuilder();

		while (t-- > 0) {

			int n = r.nextInt();
			int arr[] = r.nextIntArray(n);

			int prefix[] = new int[n + 1];

			for (int i = 0; i < n; i++) {
				int sum = arr[i];
				for (int j = i + 1; j < n; j++) {
					sum += arr[j];
					if (sum <= n) {
						prefix[sum]++;
					} else {
						break;
					}
				}
			}

			int cnt = 0;
			for (int i = 0; i < n; i++) {
				cnt += (prefix[arr[i]] > 0) ? 1 : 0;
			}
			res.append(cnt).append("\n");

		}

		out.print(res);
		out.close();

	}

	private static void solve6() throws IOException {

		int t = r.nextInt();
		StringBuilder res = new StringBuilder();

		while (t-- > 0) {

			int n1 = r.nextInt();
			int n2 = r.nextInt();
			int n3 = r.nextInt();

			StringBuilder ans = new StringBuilder();

			if (n1 == 0 && n2 == 0) {
				for (int i = 1; i <= n3 + 1; i++) {
					ans.append('1');
				}
			} else {
				// checking if n2 is even
				if ((n2 & 1) == 0 && n2 > 0) {
					String to = "";
					for (int i = 1; i <= n2 / 2; i++) {
						to += "10";
					}
					to = to.substring(0, to.length() - 1);
					ans.append(to);
					n2 = 1;
				}
				// filling for n1
				for (int i = 1; i <= n1 + 1; i++) {
					ans.append('0');
				}
				// filling for n2
				String to = "";
				for (int i = 1; i <= (n2 + 1) / 2; i++) {
					to += "01";
				}
				if (to.length() >= 2)
					ans.append(to.substring(1));
				// filling for n3
				for (int i = 1; i <= n3; i++) {
					ans.append('1');
				}
			}
			res.append(ans).append("\n");

		}

		out.print(res);
		out.close();

	}

	private static void solve7() throws IOException {

		int t = r.nextInt();
		StringBuilder res = new StringBuilder();

		while (t-- > 0) {

			int n = r.nextInt();

			if (n >= 4) {
				for (int i = n; i >= 1; i--) {
					if ((i & 1) != 0) {
						res.append(i).append(" ");
					}
				}
				res.append(4 + " " + 2 + " ");
				for (int i = 6; i <= n; i++) {
					if ((i & 1) == 0) {
						res.append(i).append(" ");
					}
				}
			} else {
				res.append(-1);
			}
			res.append("\n");

		}

		out.print(res);
		out.close();

	}

	public static void main(String[] args) throws IOException {

//		solve1();

//		solve2();

//		solve3();

//		solve4();

//		solve5();

//		solve6();

		solve7();

	}

}