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.
//Input
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;
//Output
import java.io.PrintWriter;
//DataStructure
import java.util.Arrays;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Vector;
import java.util.Map;
import java.util.HashMap;
import java.util.TreeMap;
import java.util.LinkedHashMap;
import java.util.HashSet;
import java.util.TreeSet;
import java.util.LinkedHashSet;
import java.util.Collections;
import java.util.Collection;
//Maths
import static java.lang.Math.abs;
import static java.lang.Math.ceil;
import static java.lang.Math.floor;
import static java.lang.Math.max;
import static java.lang.Math.min;

public class Solution{
  public static void sort(int arr[]){
    ArrayList<Integer> al = new ArrayList<Integer>();
    for(int value : arr){
        al.add(value);
    }
    Collections.sort(al);
    for(int i = 0; i < al.size(); i++){
      arr[i] = al.get(i);
    }
  }  
  public static void main(String [] args)throws Exception{
     BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
     int testCase = Integer.parseInt(sc.readLine());
     while(testCase -- > 0){
      //Array Input
      int n = Integer.parseInt(sc.readLine());
    //   String s[] = sc.readLine().split(" ");
    //   int arr[] = new int[n];
    //   for(int i = 0; i <n; i++){
    //     arr[i] = Integer.parseInt(s[i]);
    //   }
      /*long arr[] = new long[n];
      for(int i = 0; i <n; i++){
        arr[i] = Long.parseLong(s[i]);
      }*/
      /*
      int n = Integer.parseInt(sc.readLine());
      //int m = Integer.parseInt(sc.readLine());
      int m = n;
      String s[][] = new String[n][m];
      int arr[][] = new int[n][m];
      for(int i = 0; i < n; i++){
        s[i] = sc.readLine().split(" ");
      }
      for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
          arr[i][j] = Integer.parseInt(s[i][j]);
        }
      }
      */
      //start
      for(int i = 1; i <= n; i++)
        System.out.print(i+" ");
      System.out.println();
    }
  }
}