#include using namespace std; typedef long long ll; typedef long double ld; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> n >> d >> k; vector> dp(n+1,vector(k+1)),ds(n+1,vector(k+1)); dp[0][0]=1; for(int i=0;i<=k;i++){ ds[0][i]=1; } for(int i=0;i=0){ (dp[i+1][j]+=(ds[i][j-1]-ds[i][j-d-1]+mod)%mod)%=mod; } else{ (dp[i+1][j]+=ds[i][j-1])%=mod; } } for(int j=1;j<=k;j++){ ds[i+1][j]=(ds[i+1][j-1]+dp[i+1][j])%mod; } } cout << dp[n][k] << endl; }