fork download
#include <iostream>
#include <cstring>
#define ll long long int
#define mod 1000000007

using namespace std;

int main(){
    int t;
    cin>>t;
    while(t--){
        int i,j,k,c,n,m;
        cin>>n>>c>>m;
        int dp[c+1][n+1];
        int bin[n+1][n+1];
        memset(dp, 0, sizeof(dp));
        memset(bin, 0, sizeof(bin));
        dp[0][0]=1;
        for(i=0;i<=n;i++){
            bin[i][0]=1;
        }
        for(i=1;i<=n;i++){
            for(j=1;j<=i;j++){
                bin[i][j]=(bin[i-1][j]+bin[i-1][j-1])%mod;
            }
        }
        for(i=1;i<=c;i++){
            for(j=1;j<=n;j++){
                ll res=0, p, q;
                for(k=m;k<=j;k++){
                    p=(ll)dp[i-1][j-k]%mod;
                    q=bin[j][k]%mod;
                    res=(res+ p*q)%mod;
                }
                dp[i][j]=(res/i)%mod;
            }
        }
        /*for(i=0;i<=c;i++){
            for(j=0;j<=n;j++){
                cout<<dp[i][j]<< " ";
            }cout<<endl;
        }*/
        cout<<dp[c][n]<<endl;
    }
    return 0;
}
Success #stdin #stdout 0s 4172KB
stdin
1
2 1 2
stdout
1