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 M 1000000007
#define MM 998244353
#define pb push_back
#define mem0(a) memset(a,0,sizeof(a))
#define mem1(a) memset(a,-1,sizeof(a))
#define memf(a) memset(a,false,sizeof(a))
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define sz(a) (ll)a.size()
#define F first
#define S second
#define PI 3.1415926536
#define INF 2000000000000000000
#define endl "\n"
#define _time_ 1.0 * clock() / CLOCKS_PER_SEC
#define ll long long
#define gcd __gcd
//#define int long long
void no()
{
	cout << "NO" <<endl;
}
void yes()
{
	cout << "YES" <<endl;
}
void prin(vector<int> v)
{
	cout << v.size() <<endl;
	for(int i=0;i<v.size();i++)
	{
		cout << v[i] << " ";
	}
	cout <<endl;
}

void solve()
{
	int n,k;
	cin >> n >>k;
	vector<int> v;
	for(int i=k+1;i<=n;i++)
	{
		v.pb(i);
	}
	if(k!=1)
	{
		for(int i=(k+1)/2;i<k;i++)
		{
			v.pb(i);
		}
	}
	prin(v);

}

//right click listen
//ctrl+shift+u there
// then ctrl+alt+b here i.e. run
signed main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t = 1;
    cin >> t;
    while(t--)
    {
        solve();
    }
}