#include #include #include #include #include #include #include #include #include #include #define mkp make_pair #define mkt make_tuple #define rep(i,n) for(int i = 0; i < (n); ++i) using namespace std; typedef long long ll; const ll MOD=1e9+7; template void chmin(T &a,const T &b){if(a>b) a=b;} template void chmax(T &a,const T &b){if(a>N>>D>>K; int t=0; dp[t][0]=1; for(int i=0;i sum(K+2,0); for(int j=0;j<=K;j++){ sum[j+1]=sum[j]; add(sum[j+1],dp[t][j]); } for(int j=1;j<=K;j++){ ll res=sum[j]; add(res,MOD-sum[max(0,j-D)]); dp[1-t][j]=res; } for(int j=0;j<=K;j++) dp[t][j]=0; t=1-t; } cout<