#include using namespace std; using ll = long long; #define rep(i,a,n) for (long long i = (a); i < (long long)(n); i++) #define erep(i,a,n) for (long long i = (a); i <= (long long)(n); i++) #define rrep(i,a,n) for (long long i = (a); i > (long long)(n); i--) #define rerep(i,a,n) for (long long i = (a); i >= (long long)(n); i--) ll N, S, K; ll mod = 1e9+7; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> N >> S >> K; vector> dp(109, vector(2e4+9)); ll KK = 0; rep(i, 1, N) { KK += K * i; } dp[0][0] = 1; erep(i, 1, N) { erep(j, 0, S-KK) { if(j >= i) dp[i][j] = dp[i-1][j] + dp[i][j-i]; else dp[i][j] = dp[i-1][j]; dp[i][j] %= mod; } } ll idx = max(0LL, S-KK); cout << dp[N][idx] << endl; return 0; }