A permutation of length n is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array) and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).

For a positive integer n, we call a permutation p of length n good if the following condition holds for every pair i and j (1 ≤ i ≤ j ≤ n) — 

  * (p_i  OR  p_{i+1}  OR  …  OR  p_{j-1}  OR  p_{j}) ≥ j-i+1, where OR denotes the [bitwise OR operation.](https://en.wikipedia.org/wiki/Bitwise_operation#OR)



In other words, a permutation p is good if for every subarray of p, the OR of all elements in it is not less than the number of elements in that subarray. 

Given a positive integer n, output any good permutation of length n. We can show that for the given constraints such a permutation always exists.

Input

Each test contains multiple test cases. The first line contains the number of test cases t (1 ≤ t ≤ 100). Description of the test cases follows.

The first and only line of every test case contains a single integer n (1 ≤ n ≤ 100).

Output

For every test, output any good permutation of length n on a separate line. 

Example

Input


3
1
3
7


Output


1
3 1 2
4 3 5 2 7 1 6

Note

For n = 3, [3,1,2] is a good permutation. Some of the subarrays are listed below. 

  * 3 OR 1 = 3 ≥ 2 (i = 1,j = 2) 
  * 3 OR 1 OR 2 = 3 ≥ 3 (i = 1,j = 3) 
  * 1 OR 2 = 3 ≥ 2 (i = 2,j = 3) 
  * 1 ≥ 1 (i = 2,j = 2) 



Similarly, you can verify that [4,3,5,2,7,1,6] is also good.
import java.util.*;
import java.lang.*;
import java.io.*;
import java.math.BigInteger;

public class Suborray
{	public static StringBuilder result;
	public static void solve() throws IOException
    {
		int n=ni();
		int a=1;
		p(a+" ");
		for(int i=2;i<=n;i++)
		{
			a=a|i;
			if(a>=i)
			{
				p(i+" ");
			}
		}
		pln("");
	}
	static AnotherReader sc;
    static PrintWriter out;
	public static void main (String[] args) throws java.lang.Exception
	{
		boolean oj = true;
        if(oj){sc=new AnotherReader();out=new PrintWriter(System.out);}
        else{sc=new AnotherReader(100);out=new PrintWriter("output.txt");}
        int t=1;
		result=new StringBuilder();
		t=ni();
		long s = System.currentTimeMillis();
        while(t-->0)
			solve();
		//pln(((System.currentTimeMillis() - s)/1000.0) + "s");
		out.flush();out.close();  
	}
	static void pln(Object o){out.println(o);}
    static void p(Object o){out.print(o);}
    static void pni(Object o){out.println(o);out.flush();}
    static int ni()throws IOException{return sc.nextInt();}
    static long nl()throws IOException{return sc.nextLong();}
    static double nd()throws IOException{return sc.nextDouble();}
    static String nln()throws IOException{return sc.nextLine();}
    static int[] nai(int N)throws IOException{int[]A=new int[N];for(int i=0;i!=N;i++){A[i]=ni();}return A;}
    static long[] nal(int N)throws IOException{long[]A=new long[N];for(int i=0;i!=N;i++){A[i]=nl();}return A;}
    static long gcd(long a, long b)throws IOException{return (b==0)?a:gcd(b,a%b);}
    static int gcd(int a, int b)throws IOException{return (b==0)?a:gcd(b,a%b);}
    static int bit(long n)throws IOException{return (n==0)?0:(1+bit(n&(n-1)));}
	static boolean isPowerOfTwo (int x) throws IOException{ return x!=0 && ((x&(x-1)) == 0);} //1000(8) & 1111(7)==0
	static boolean isPrime2(long n)throws IOException{ return BigInteger.valueOf(n).isProbablePrime(1);}
	static BigInteger factorial(long n) throws IOException{BigInteger res = BigInteger.ONE;for(long i=1;i<=n;i++)res = res.multiply(BigInteger.valueOf(i)); return res;}
	static boolean isPrime(long n){if(n<2)return false;if(n==2 || n==3)return true;for(int i=1;i*i<=n;i++){long a=6*i+1;long b=6*i-1;if(n%a==0 || n%b==0)return false;}return true;}
 
 
    static class AnotherReader{BufferedReader br; StringTokenizer st;AnotherReader()throws FileNotFoundException{br=new BufferedReader(new InputStreamReader(System.in));}AnotherReader(int a)throws FileNotFoundException{br = new BufferedReader(new FileReader("input.txt"));}String next()throws IOException{while (st == null || !st.hasMoreElements()) {try{st = new StringTokenizer(br.readLine());}catch (IOException  e){e.printStackTrace(); }}return st.nextToken();}int nextInt() throws IOException{return Integer.parseInt(next());}long nextLong() throws IOException{return Long.parseLong(next());}double nextDouble()throws IOException {return Double.parseDouble(next()); }String nextLine() throws IOException{ String str = "";try{str = br.readLine();}catch (IOException e){e.printStackTrace();} return str;}} 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
}