Problem: You are given two integers n and k. You are asked to choose maximum number of distinct integers from 1 to n so that there is no subset of chosen numbers with sum equal to k.

A subset of a set is a set that can be obtained from initial one by removing some (possibly all or none) elements of it.

Input

The first line contains the number of test cases T (1 ≤ T ≤ 100).

Each of the next T lines contains two integers n and k (1 ≤ k ≤ n ≤ 1000) — the description of test cases.

Output

For each test case output two lines. In the first line output a single integer m — the number of chosen integers.

In the second line output m distinct integers from 1 to n — the chosen numbers.

If there are multiple answers, print any. You can print the numbers in any order.

Example

Input


3
3 2
5 3
1 1


Output


2
3 1 
3
4 5 2 
0

Solution (in JAVA):

Solution:
// package com.company;



import java.math.*;
import java.util.*;
import java.lang.*;
import java.io.*;



public final class Main {

    static int m = 1000000007;


    public static void main(String[] args) throws Exception
    {
        // your code goes here

//   Collections.sort(xu, new Comparator<LongPair>() {
//       @Override public int compare(LongPair p1, LongPair p2)
//       {
//           return (int) ((int) p2.first - p1.first);
//       }
//   });
        FastReader s = new FastReader();

        //  for taking innput of array of length "len"

//                   int [] arr = new int[len];
//                    String [] strs =  s.nextLine().trim().split("\\s+");
//
//                   for (int i = 0; i < len; i++)
//                   {
//                       arr[i] = Integer.parseInt(strs[i]);
//
//
//                   }

//
//
        int t = s.nextInt();
       // StringBuilder sb = new StringBuilder();
        while(t-->0)
        {


            int n,k;
            n = s.nextInt();
            k = s.nextInt();

            ArrayList<Integer> arr = new ArrayList<>();

            for(int i=k+1;i<=n;i++)
            {
                arr.add(i);
            }

            for(int i=k-1;i>=k/2+1;i--)
            {
                arr.add(i);
            }
            if(k%2==0)
                arr.add(k/2);


            System.out.println(arr.size());
            for(int i=0;i<arr.size();i++) {
                System.out.print(arr.get(i)+" ");
            }


            System.out.println();
        }
        








        //  for printing ar array of size "len"
        //   StringBuffer sb = new StringBuffer();
        //   for (int i = 0; i < len; i++)
        //   sb.append(arr[i] + " ");
        //
          // System.out.println(sb);




    }




//    static long fastPow(long base, long exp, long m) {
//        if (exp == 0)
//            return 1;
//        long half = fastPow(base, exp / 2, m);
//        if (exp % 2 == 0)
//            return mul(half, half, m);
//        return mul(half, mul(half, base, m), m);
//    }
//
//    static long mul(long a, long b, long m) {
//        return a * b % m;
//    }
//
//

    static class FastReader
    {
        BufferedReader br;
        StringTokenizer st;

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

        String next()
        {
            while (st == null || !st.hasMoreElements())
            {
                try
                {
                    st = new StringTokenizer(br.readLine());
                }
                catch (IOException  e)
                {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

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

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

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

        String nextLine()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
    }

}