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<iostream>
#include<algorithm>
#include<string>
#include<sstream>
#include<stack>
#include<vector>
#include<set>
#include<map>
#include<utility>
#include<queue>
#include<cstring>
#include<deque>
#include<tuple>
#include<list>
#include<cmath>
#include<cstdlib>
#include<iomanip>
#include<bitset>
#include<random>
#include<limits>
#include<chrono>
using namespace std;
using namespace std::chrono;
typedef long long ll;
string IntToString(ll a) 
{ 
    char x[100]; 
    sprintf(x, "%lld", a); 
    string s = x; 
    return s; 
} 

ll StringToInt(string a) 
{ 
    char x[100]; 
    ll res; 
    strcpy(x, a.c_str()); 
    sscanf(x, "%lld", &res); 
    return res; 
}
vector<string> split(string s,char b)
{
    vector<string>ans;
    string temp = "";
    for (int i=0;i<s.size();i++)
    {
        if (s[i]==b)
        {
            ans.push_back(temp);
            temp = "";
        }
        else
            temp+=s[i];
    }
    return ans;
}

/*-------------------------------------------------CODE STARTS HERE------------------------------------------------*/

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    //auto start = high_resolution_clock::now(); 

    //write your code here
    int t;
    cin>>t;
    while (t--)
    {
        int n,k;
        cin>>n>>k;
        cout<<n-k+k/2<<'\n';

        for (int i=(k+1)/2;i<k;i++)
        cout<<i<<" ";
        for (int i=k+1;i<=n;i++)
        cout<<i<<' ';
        cout<<'\n';
    }

    
    /* auto stop = high_resolution_clock::now(); 
        auto duration = duration_cast<microseconds>(stop - start); 

    cout << "Time taken by function: "
        << duration.count() << " microseconds" << endl; 
        */

    return 0;
}