// No.269 見栄っ張りの募金活動 #include using namespace std; typedef long long ll; // const int INF = 2147483647; // const ll INF = 9223372036854775807; const ll MOD = 1e9 + 7; int dp[101][20001]; int main() { int N, S, K; cin >> N >> S >> K; for (int j=0; j<=S; j++) { if (j % N == 0) { dp[1][j] = 1; } } for (int i=2; i<=N; i++) { for (int j=0; j<=S; j++) { if (j - K*(N-i+1) < 0) continue; if (j - (N-i+1) < 0) { dp[i][j] = dp[i-1][j - K*(N-i+1)]; } else { dp[i][j] = (dp[i-1][j - K*(N-i+1)] + dp[i][j - (N-i+1)]) % MOD; } } } cout << dp[N][S] << endl; // **** debug **** /* for (int i=1; i<=N; i++) { cout << "i=" << i << " "; for (int j=0; j<=S; j++) { cout << dp[i][j] << " "; } cout << endl; } */ return 0; }