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 CPP):

Solution:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define reg register
#define x1 x11
#define x2 x22
#define y1 y11
#define y2 y22
#define z1 z11
#define z2 z22
const int mod=998244353;
const int INF=2e16;
const int maxn=1e6+5;
const double Pi=acos(-1.0);
double Exp=1e-6;
inline int read()
{
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0' || ch>'9')
	{
	    if(ch=='-')
	        f=-1;
	    ch=getchar();
	}
	while(ch>='0' && ch<='9')
	{
	    x=x*10+ch-'0';
	    ch=getchar();
	}
	return x*f;
}
int n,k;
int T;
int s[maxn];
int tot=0;
signed main()
{
	T=read();
	while(T--)
	{
		tot=0;
		n=read(),k=read();
		for(int i=k+1;i<=n;i++)
		s[++tot]=i;
		int now=0;
		if(k!=1)
		{
			s[++tot]=k-1;
			int now=k-1;
			for(int i=k-2;i>=1;i--)
			{
				if(now+i>k)
				s[++tot]=i,now=i;
				else
				break;
			}
			printf("%lld\n",tot);
			for(int i=1;i<=tot;i++)
			{
				printf("%lld ",s[i]);
			}
			printf("\n");
		}
		else
		{
			printf("%lld\n",tot);
			for(int i=1;i<=tot;i++)
			{
				printf("%lld ",s[i]);
			}
			printf("\n");
		}
	}
	return 0;
}	

/*
10
0011011010
1110011101
*/