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;

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef double db;
#define all(x) (x).begin(), (x).end()

const ll MAX = 1e9, INF = 1e18, MIN = -1e9, MIN_INF = -1e18;

void fastio() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
}

ll gcd(ll a, ll b) {
    while (b) {
        a %= b;
        swap(a, b);
    }
    return a;
}

void solve() {
    int n, k;
    cin >> n >> k;
    if (n == 1 && k == 1) {
        cout << 0 << "\n";
        return;
    }
    set<int> a;
    for (int i = n; i > k; i--) a.insert(i);

    int cnt = k - 1;

    while (cnt > 0) {
        if (a.find(k - cnt) == a.end()) {
            a.insert(cnt);
            // cout << cnt << "\n";
            cnt--;
        } else {
            break;
        }
    }
    cout << a.size() - (a.find(0) != a.end()) << "\n";
    for (auto i : a) {
        if (i) cout << i << " ";
    }
    cout << "\n";
}

int main() {
    ll t = 1;
    fastio();
    cin >> t;
    while (t--) { solve(); }
    return 0;
}