#include <iostream>
#include <vector>
#include <set>
using namespace std;

const int maxn = 2016;

vector<int> win[maxn];
int move[maxn];
void fillwin(){
    win[1].push_back(1);
    for (int i = 2; i < maxn; i++){
        int empty = -1;
        for (int j = 0; j < win[i - 1].size(); j ++){
            if (win[i - 1][j] == 0){
                empty = j;
                break;
            }
        }
        if (empty == -1)
            empty = win[i - 1].size();
        for (int j = 0; j < empty; j++)
            win[i].push_back(win[i -1][j] - 1);
        win[i].push_back(empty + 1);
        for (int j = empty + 1; j < win[i - 1].size(); j++)
            win[i].push_back(win[i -1][j]);
    }
}

int main(){
    int T;
    cin >> T;
    fillwin();
    while (T--){
        int no, n;
        cin >> no >> n;
        cout << no << " " << win[n].size() << endl;
        for (int i = 0; i < win[n].size(); i++){
            cout << win[n][i];
            if ((i + 1) % 10 == 0)
                cout << endl;
            else if (i + 1 != win[n].size())
                cout  << " "; 
        }
        if (win[n].size() % 10 != 0)
            cout << endl;
    }
}