#include using namespace std; #define rep(i,n) for(int i = 0; i < (n);i++) #define sz(x) int(x.size()) typedef long long ll; typedef pair P; constexpr int mod = 1e9+7; int main(){ int n, d, k; cin >> n >> d >> k; vector dp(k+1,0); dp[0] = 1; for (int i = 0; i < n; i++) { vector ndp(k+1,0); vector cum(k+1,0); for (int j = 0; j < k; j++) { cum[j + 1] = (cum[j] + dp[j]) % mod; } for (int j = 0; j <= k; j++) { int l = max(0, j - d); ndp[j] = (cum[j] - cum[l] + mod) % mod; } swap(dp, ndp); } cout << dp[k] << endl; return 0; }