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