# 分割数では、Kをどう表したらよいのかわからない # 3次元dpでどうか # dp[i人目][募金合計j円][直近k円]の組み合わせ数 # これじゃ全然間に合わないね N, S, K = map(int, input().split()) mod = 10**9+7 dp = [[[0]*(S+1) for j in range(S+1)] for i in range(N+1)] dp[0][0][0] = 1 #print(dp[0]) for i in range(1, N+1): if i == 1: for j in range(S+1): dp[i][j][j] = 1 else: for j in range(S+1): for k in range(S+1): for l in range(K, S+1): if j+k+l <= S and k+l <= S: dp[i][j+k+l][k+l] += dp[i-1][j][k] dp[i][j+k+l][k+l] %= mod #print(dp[i]) ans = sum(dp[N][S])%mod print(ans)