#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
#include <algorithm>
#include <queue>
#include <unordered_map>
#include <iomanip>
#include <set>
#include <map>
#include <numeric>
#include <chrono>
#include <assert.h>      // std::rand, std::srand
#include <string.h>

using namespace std;

//ifstream cin("input.in");
//ofstream cout("output.out");

typedef long long LL;
typedef long double LD;
typedef vector<vector<int>> vvi;
const int INF = 0x3f3f3f3f;
const long long INF64 = 3e18 + 1;

//typedef __uint128_t u128;

const char invdir[]{'L', 'U', 'R', 'D'};

const int dx[]{0, 1, 0, -1};
const int dy[]{1, 0, -1, 0};

unsigned get_seed(){
  unsigned seed = chrono::system_clock::now().time_since_epoch().count();
  return seed;
}

#include <vector>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cctype>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <bitset>
#include <map>
#include <complex>
#include <ctime>
#include <numeric>
#include <set>

using namespace std;

const int MOD = 1000000007;
const int MOD2 = (1 << 30) - 35;
const int MOD3 = (1 << 29) - 121;
const int NMAX = 200550;
const int MAXV = 2000055;

typedef long long ll;


int solve(){
  int n, k;
  cin >> n >> k;
  vector<int> ans;
  for(int i = k - 1; i >= (k + 1) / 2; i--){
    ans.push_back(i);
  }
  for(int i = k + 1; i <= n; ++i){
    ans.push_back(i);
  }
  cout << ans .size() << "\n";
  for(auto el: ans){
    cout << el << " ";
  }
  cout << "\n";


  return 0;
}

int main() {
  cout << setprecision(4);
  //cin.tie(0);
  std::ios_base::sync_with_stdio(0);
  int T = 1;

  //auto rng = mt19937{get_seed()};
  cin >> T;

  int i = 1;
  while(T--){
    i++;
    /*
    if(i != 26 && i != 25 && i != 27)
        continue;
    */
    //cout << "Case #" << i << ": ";

    solve();
    //cout << "\n";
  }


  return 0;
}
