################################################### def example(): global input example = iter( """ 300 300 90000 """ .strip().split("\n")) input = lambda: next(example) ################################################### import sys input = sys.stdin.readline from bisect import bisect_left, bisect_right example() N,d,K=map(int, input().split()) MOD=10**9+7 dp=[0]*(K+2) dp[0]=1 for n in range(1,N+1): for k in range(min((n-1)*d,K)+1)[::-1]: dp[k+1]+=dp[k] dp[min(k+d,K)+1]-=dp[k] dp[k]=0 acc=[0] for a in dp: acc.append((acc[-1]+a)%MOD) dp=acc[1:] print(dp[K]%MOD)