#include using namespace std; typedef long long ll; ll dp[100][20000]; int N, S, K; ll M = pow(10,9) + 7; int main(){ cin >> N >> S >> K; if(K*N*(N-1)/2 > S){ cout << 0 << endl; return 0; } int i, j; dp[0][0] = 1; if(K == 0){ for(i=1; i<=N; i++){ for(j=0; j<=S; j++){ if(j-i < 0){ dp[i][j] = dp[i-1][j] % M; } else{ dp[i][j] = (dp[i][j-i] + dp[i-1][j]) % M; } } } } else if(K >= 1){ for(i=1; i<=N; i++){ int min_money = K*i*(i-1)/2; for(j=min_money; j<=S; j++){ if(j < i-1){ dp[i][j] = 0; } else if(i-1 <= j && j < i){ dp[i][j] = dp[i-1][j-(i-1)] % M; } else{ dp[i][j] = (dp[i][j-i] + dp[i-1][j-(i-1)]) % M; } } } } cout << dp[N][S] << endl; }