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 x first
#define y second
#define sc scanf
#define pr printf
#define pb push_back
#define ll long long
#define vi vector<int>
#define rr cout << endl;
#define pir pair<int, int>
#define ss(x) ((int)(x).size())
#define all(x) x.begin(), x.end()
#define co(n) cout << n << endl;
#define hhh co("hhhhhhhhhhhhhh");
#define sr(a, n) sort(a + 1, a + 1 + n);
#define ms(a, n) memset(a, n, sizeof(a));
#define fo(i, a, b) for (int i = (a); i <= b; ++i)

const int mod = 1e9 + 7;
const double eps = 1e-6, pi = acos(-1);
const int inf = 0x3f3f3f3f, N = 1e5 + 10, M = N;

int n;

int main()
{
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false), cin.tie(0);
    cout << fixed << setprecision(20);

    int T = 1;
    cin >> T;
    while (T--)
    {
        int k;
        cin >> n >> k;
        vi v;
        fo(i, k + 1, n)
        {
            v.pb(i);
        }
        fo(i, (k + 1) / 2, k - 1)
        {
            v.pb(i);
        }
        co(ss(v))
        for (auto x : v)
            cout << x << " ";
        rr
    }

    return 0;
}