#include #define rep(i,n) for(int i=0;i P; const int INF = 1e9; const int MOD = 1000000007; int main() { int n,d,k; cin >> n >> d >> k; vector> dp(n+1,vector(k+1)); dp[0][0] = 1; for(int i=1;i<=n;i++){ for(int j=0;j<=k;j++){ if(j > 0 && j-d-1 >= 0) dp[i][j] = ((dp[i-1][j-1] + dp[i][j-1])%MOD - dp[i-1][j-d-1] + MOD)%MOD; else if(j > 0) dp[i][j] = (dp[i-1][j-1] + dp[i][j-1])%MOD; else dp[i][j] = 0; } } cout << dp[n][k] << endl; return 0; }