#include "redica.h"
#include <bits/stdc++.h>
using namespace std;
vector <int> ve;
int n,k,s,dp[305][305];
void dfs(int sum,int beg,int pos)
{
    sum-=beg;
    /*for(auto i:ve)cout<<i<<" ";
    cout<<": ";
    cout<<sum<<" "<<beg<<" "<<pos<<endl;*/
    if(pos==n+1)
    {
        submit(ve);
        return;
    }
    if(sum<(n-pos+1)||sum>(n-pos+1)*k)return;
    if(pos==n)
    {
        if(sum>k)return;
        if(sum<0)return;
        ve.push_back(sum);
        dfs(sum,sum,pos+1);
        ve.pop_back();
        return;
    }
    ve.push_back(beg);
    for(int i=1;i<=min(k,sum-(n-pos));i++)
    {
        dfs(sum,i,pos+1);
    }
    ve.pop_back();
}
void solve(int n, int k, int s)
{
    ::n=n;
    ::k=k;
    for(int i=1;i<=k;i++)dp[1][i]=1;
    for(int i=2;i<=n;i++)
    {
        for(int j=1;j<=k;j++)
        {
            for(int sum=j;sum<=s;sum++)
            {
                dp[i][sum]+=dp[i-1][sum-j];
            }
        }
    }
    int lp=0;
    for(int i=1;i<=n;i++)
    {
        if(dp[i][s]<=1e7)
        {
            lp=i;
        }
    }
    for(int i=1;i<=n-lp;i++)
    {
        int ve=query();
        ::ve.push_back(ve);
        s-=ve;
    }
    for(int i=1;i<=k;i++)
    {
        if(i<=s)
        {
            dfs(s,i,max(n-lp+1,1));
        }
    }
}
