from itertools import accumulate N, d, K = map(int, input().split()) limit = d*N prevdp = [0] * (limit + 1) prevdp[0] = 1 MOD = 10**9+7 for i in range(1, N + 1): dp = [0] * (limit + 1) #rui = list(accumulate(prevdp, initial=0)) rui = [0] for j in range(limit + 1): rui.append((rui[-1] + prevdp[j])%MOD) for j in range(i, d*i + 1): dp[j] = (rui[j] - rui[max(0, j - d)])%MOD prevdp = dp #print(dp) ans = dp[K] print(ans)