N, d, K = map(int, input().split()) mod = 10**9 + 7 dp = [[0 for i in range(d*N+2)] for j in range(N+1)] for i in range(d*N+2): dp[0][i] = 1 # dp[X][P] := X回目の移動が終わった時にいちP以下にいる方法 # みる範囲を制限する for i in range(1, N+1): for j in range(1, d*N+1): if j > d: dp[i][j] += dp[i-1][j-1] - dp[i-1][j-d-1] else: dp[i][j] += dp[i-1][j-1] dp[i][j] += dp[i][j-1] dp[i][j] %= mod ans = dp[N][K]-dp[N][K-1] print(ans % mod)