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