Problem: You have a sequence a with n elements 1, 2, 3, ..., k - 1, k, k - 1, k - 2, ..., k - (n - k) (k ≤ n < 2k).

Let's call as inversion in a a pair of indices i < j such that a[i] > a[j].

Suppose, you have some permutation p of size k and you build a sequence b of size n in the following manner: b[i] = p[a[i]].

Your goal is to find such permutation p that the total number of inversions in b doesn't exceed the total number of inversions in a, and b is lexicographically maximum.

Small reminder: the sequence of k integers is called a permutation if it contains all integers from 1 to k exactly once.

Another small reminder: a sequence s is lexicographically smaller than another sequence t, if either s is a prefix of t, or for the first i such that s_i ≠ t_i, s_i < t_i holds (in the first position that these sequences are different, s has smaller number than t).

Input

The first line contains a single integer t (1 ≤ t ≤ 1000) — the number of test cases.

The first and only line of each test case contains two integers n and k (k ≤ n < 2k; 1 ≤ k ≤ 10^5) — the length of the sequence a and its maximum.

It's guaranteed that the total sum of k over test cases doesn't exceed 10^5.

Output

For each test case, print k integers — the permutation p which maximizes b lexicographically without increasing the total number of inversions.

It can be proven that p exists and is unique.

Example

Input


4
1 1
2 2
3 2
4 3


Output


1 
1 2 
2 1 
1 3 2 

Note

In the first test case, the sequence a = [1], there is only one permutation p = [1].

In the second test case, the sequence a = [1, 2]. There is no inversion in a, so there is only one permutation p = [1, 2] which doesn't increase the number of inversions.

In the third test case, a = [1, 2, 1] and has 1 inversion. If we use p = [2, 1], then b = [p[a[1]], p[a[2]], p[a[3]]] = [2, 1, 2] and also has 1 inversion.

In the fourth test case, a = [1, 2, 3, 2], and since p = [1, 3, 2] then b = [1, 3, 2, 3]. Both a and b have 1 inversion and b is the lexicographically maximum.

Solution (in JAVA):

Solution:
import java.io.*;
import java.util.*;


public class Main {
    static final PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
    static final FastScanner fs = new FastScanner();
    private static final long MOD = (long) 1e9 + 7;
    static char[] ans = new char[400];

    public static void main(String[] args) throws IOException {
        int T  = 1;
        T = fs.nextInt();
        for(int i = 0 ; i < T ; i++){
            solve();
        }
        out.close();
    }

    static void solve(){
        int n = fs.nextInt(), k = fs.nextInt();
        for(int i = 1; i <  2 * k - n; i++){
            out.print(i + " ");
        }
        for(int i = k ; i >= 2 * k - n ; i--){
            out.print(i + " ");
        }
        out.println("");
    }

    static void sort(int[] a){
        Integer[] b = new Integer[a.length];
        for(int i = 0 ; i < a.length ; i++) b[i] = a[i];
        Arrays.sort(b);
        for(int i = 0 ; i < a.length ; i++) a[i] = b[i];
    }

    static int lower_bound(int[] a, int key){
        //assuming a is sorted
        int lb = 0;
        int rb = a.length;
//        System.out.println(rb);
        if( key <= a[lb]){
            return lb;
        }
        while(lb + 1 < rb){
            // a[lb][0] < key
            int m = (lb + rb) / 2;
            if(key <= a[m]){
                rb = m;
            }else{
                lb = m;
            }
        }
        return lb + 1;
    }
    static  class Point{
        public int x, y;
        public Point(){
            this(0, 0);
        }
        public Point(int a, int b){
            x = a;
            y = b;
        }

        @Override
        public int hashCode() {
            return x*129621+y*3692893;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (!(o instanceof Point)) return false;
            Point p = (Point) o;
            return x == p.x && y == p.y;
        }
    }


    static class ModInt{
        private long n;
        public ModInt(){
            this(0L);
        }
        public ModInt(int n_){
            this((long) n_);
        }

        public ModInt(long n_){
            n = n_;
            if(n > MOD) {
                n = n % MOD;
            }else if ( n < 0){
                if(Math.abs(n) >= MOD){
                    n = n % MOD;
                }
                n += MOD;
            }
        }
        long getVal(){
            return n;
        }
        @Override
        public String toString() {
            return String.valueOf(n);
        }
        ModInt add(long rhs){
            long ans = this.n + rhs;
            return new ModInt(ans);
        }
        ModInt add(ModInt rhs){
            return this.add(rhs.getVal());
        }

        ModInt multiply(long rhs){
            long ans = this.n * rhs;
            return new ModInt(ans);
        }

        ModInt multiply(ModInt rhs){
            return this.multiply(rhs.getVal());
        }

        ModInt substract(long rhs){
            long ans = this.n - rhs;
            return new ModInt(ans);
        }

        ModInt substract(ModInt rhs){
            return this.substract(rhs.getVal());
        }

        ModInt pow(long n){
            if( n < 2){
                long ans = 1;
                for(int i = 0 ; i < n ; i++) ans *= this.n;
                return new ModInt(ans);
            }
            ModInt ans = this.pow(n/2);
            ans = ans.multiply(ans);
            if( n % 2 == 1) ans = ans.multiply(this);
            return ans;
        }
        ModInt pow(ModInt rhs){
            return  this.pow(rhs.getVal());
        }

        ModInt divide(long rhs){
            return this.divide(new ModInt(rhs));
        }

        ModInt inverse(){
            return this.pow(MOD-2);
        }

        ModInt divide(ModInt rhs){
            ModInt rhs_inverse = rhs.pow(MOD - 2);
            return this.multiply(rhs_inverse);
        }
    }
    static class Combinatorial{
        private ModInt[] factorial, inverse_factorial;
        private int sz;
        public Combinatorial(int n){
            factorial = new ModInt[n + 1];
            inverse_factorial = new ModInt[n + 1];
            this.sz = n;
            calculate_factorial();
        }
        private void calculate_factorial(){
            factorial[0] = new ModInt(1);
            for(int i = 1 ; i <= sz ; i++){
                factorial[i] = new ModInt(1);
                factorial[i] = factorial[i-1].multiply(i);
            }
            inverse_factorial[sz] = factorial[sz].inverse();
            for(int i = sz - 1 ; i >= 0 ; i--){
                inverse_factorial[i] = new ModInt(1);
                inverse_factorial[i] = inverse_factorial[i+1].multiply(i+1);
            }
        }
        public ModInt nCr(int n, int r){
            ModInt ans = factorial[n];
            ans = ans.multiply(inverse_factorial[r]);
            ans = ans.multiply(inverse_factorial[n-r]);
            return ans;
        }
    }
}

class data_container{
    int first, second;
    public data_container(){
    }
    public data_container(int f, int s){
        first = f;
        second = s;
    }

    public int getComparableField(){
        return first;
    }

    public int compareTo(data_container o) {
        if(this.getComparableField() == o.getComparableField()){
            return 0;
        }else if(this.getComparableField() > o.getComparableField()){
            return 1;
        }else{
            return -1;
        }
    }

    public int compareTo(int target) {
        if(this.getComparableField() == target){
            return 0;
        }else if(this.getComparableField() > target){
            return 1;
        }else{
            return -1;
        }
    }

    public int lower_bound(data_container[] a, int key){
        //assuming a is sorted
        int lb = 0;
        int rb = a.length;
        if( a[lb].compareTo(key) >= 0){
            return lb;
        }
        while(lb + 1 < rb){
            // a[lb][0] < key
            int m = (lb + rb) / 2;
            if( a[m].compareTo(key) >= 0){
                rb = m;
            }else{
                lb = m;
            }
        }
        return lb + 1;
    }

}

class FastScanner {
    BufferedReader br;
    StringTokenizer st;

    public FastScanner(String s) {
        try {
            br = new BufferedReader(new FileReader(s));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public FastScanner() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    String nextToken() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() {
        return Integer.parseInt(nextToken());
    }

    long nextLong() {
        return Long.parseLong(nextToken());
    }

    int[] readArray(int n){
        int[] a = new int[n];
        for(int i = 0 ; i < n ; i++) a[i] = nextInt();
        return a;
    }

    long[] readArrayLong(int n){
        long[] a = new long[n];
        for(int i = 0 ; i < n ; ++i) a[i] = nextLong();
        return a;
    }

    double nextDouble() {
        return Double.parseDouble(nextToken());
    }
}

class Dsu {
    private int sz;
    private int[] par;

    public Dsu(int sz) {
        this.sz = sz;
        par = new int[sz];
        Arrays.fill(par, -1);
    }

    public int leader(int i) {
        int p = i;
        while (par[p] >= 0) p = par[p];
        return p;
    }

    public int group_size(int i) {
        int pi = leader(i);
        return -par[pi];
    }

    public void merge(int i, int j) {
        int pi = leader(i);
        int pj = leader(j);
        if (pi == pj) return;
        int szi = group_size(i);
        int szj = group_size(j);
        if (szi > szj) {
            par[pj] = pi;
            szi += szj;
            par[pi] = -szi;
        } else {
            par[pi] = pj;
            szj += szi;
            par[pj] = -szj;
        }
    }

    public boolean is_same(int i, int j){
        return leader(i) == leader(j);
    }
}