N,K,D=map(int,input().split()) m=10**9+7 x=(N-K)//(K-1)+1 f=N-(K-1)*x dp=[1]+[0]*x for _ in range(f-1): for i in range(x):dp[i+1]=(dp[i]+dp[i+1])%m c,p=0,1 for d in dp[::-1]: c=(c+p*d)%m p=p*D%m print([c*f%m,f][D==1])