#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;
}