""" 1<=n,d<=300 n<=k<=n*d 貰うdp x段目に到達できるのは前回x-d~x-1段目にいるとき 累積和で高速化 """ n,d,k=map(int,input().split()) dp=[0]*(n*d+1) dp[0]=1 mod=10**9+7 for _ in range(n): ndp=[0]*(n*d+1) tmp=0 for i in range(n*d+1): if 0<=i-d-1: tmp-=dp[i-d-1] tmp%=mod ndp[i]=tmp # sum(dp[i-d:i]) tmp+=dp[i] tmp%=mod dp=ndp print(dp[k])