# 前から順にやると間に合わないと見た # 何らかの計算式か、逆順か # とりあえず2次元dp # dp[i階][j回の移動]回数 N, d, K = map(int, input().split()) dp = [[0]*(K+1) for i in range(N+1)] dp[0][0] = 1 mod = 10**9+7 for i in range(1, N+1): for j in range(K+1): for k in range(1, d+1): if j+k <= K: dp[i][j+k] += dp[i-1][j] dp[i][j+k] %= mod #print(dp[i]) ans = dp[N][K]%mod print(ans)