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:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class task1 {
	static FastScanner sn = new FastScanner();

	public static void main(String[] args) {
		try {
			StringBuilder sb = new StringBuilder();
			int t=sn.nextInt();
			for(int i=0; i<t; i++) {
				int n = sn.nextInt();
				double k = sn.nextInt();

				int sum = 0;
				int[] firstNumbers = new int[0];
				if(k<n) {
					sum+=(n-k);
					firstNumbers = new int[sum];
					for(int a=0; a<sum; a++) {
						firstNumbers[a] = n--;
					}
				}
				if(n==k) n--;

				k = Math.floor(k/2);
				sum+=k;
				sb.append(sum).append("\n");
				int[] secondNumbers = new int[(int) k];
				for(int a=0; a<k; a++) {
					if(n==0)
						continue;
					secondNumbers[a] = n--;
				}
				for(int a=secondNumbers.length-1; a>=0; a--) {
					sb.append(secondNumbers[a]).append(" ");
				}
				for(int a=firstNumbers.length-1; a>=0; a--) {
					sb.append(firstNumbers[a]).append(" ");
				}
				sb.append("\n");
			}
			System.out.println(sb.toString());
		} catch (Exception exception) {
			exception.printStackTrace();
		}
	}

	static class FastScanner {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer str = new StringTokenizer("");

		String next() throws IOException {
			while (!str.hasMoreTokens()) str = new StringTokenizer(br.readLine());

			return str.nextToken();
		}

		String nextLine() throws IOException {
			return br.readLine();
		}

		char nextChar() throws IOException {
			return next().charAt(0);
		}

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

		float nextfloat() throws IOException {
			return Float.parseFloat(next());
		}

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

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

		byte nextByte() throws IOException {
			return Byte.parseByte(next());
		}

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