## https://yukicoder.me/problems/no/1011 MOD = 10 ** 9 + 7 def main(): N, d, K = map(int, input().split()) dp = [[0] * (N + 1) for _ in range(K + 1)] dp[0][0] = 1 cum_dp = [[0] * (N + 1) for _ in range(K + 1)] for n in range(N + 1): cum_dp[0][n] = dp[0][n] for k in range(1, K + 1): for n in range(N + 1): new_n = n + 1 if new_n <= N: if k - d - 1 >= 0: dp[k][new_n] += (cum_dp[k - 1][n] - cum_dp[k - d - 1][n]) % MOD else: dp[k][new_n] += cum_dp[k - 1][n] dp[k][new_n] %= MOD for n in range(N + 1): cum_dp[k][n] = (dp[k][n] + cum_dp[k - 1][n]) % MOD cum_dp[k][n] %= MOD print(dp[-1][N]) if __name__ == "__main__": main()