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