#include <iostream>
#include <vector>

#include <cstdio>
#include <cassert>

using namespace std;
typedef long long ll;

const int N = 100;
const ll G = 1e12;

ll mat[N][N];

inline ll sum(ll a, ll b)
{
    return (a + b > G) ? G+1 : a + b;
}

void pascal()
{
    for (int i = 0; i < N-1; i++) {
        mat[i][0] = 1;
        mat[i][i+1] = 0;
    }
    mat[N-1][0] = 1;
    for (int i = 1; i < N; i++) {
        for (int j = 1; j <= i; j++) {
            mat[i][j] = sum(mat[i-1][j-1], mat[i-1][j]);
        }
    }
}

void solve(int c, ll g)
{
    int r;
    for (r = 0; r < N && mat[r][c] < g; r++)
        ;
    assert(r < N);
    if (mat[r][c] > g)
        r--;
    vector<ll> v;
    v.push_back(mat[r][c]);
    g -= mat[r][c];
    while (g)
    {
        assert(c);
        c--;
        for (; mat[r][c] > g; r--)
            ;
        v.push_back(mat[r][c]);
        g -= mat[r][c];
    }

    cout << v.size() << endl;
    for (int i = 0; i < v.size(); i++)
        cout << v[i] << ' ';
    cout << endl;
}

int main()
{
    int t, r, c;
    ll g;
    pascal();

    cin >> t;
    while (t--)
    {
        cin >> r >> c >> g;
        solve(c, g);
    }

    return 0;
}