#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main(int argc, char const *argv[]) { int N, S, K; int div = 1000000007; cin >> N >> S >> K; S -= N * (N - 1) / 2 * K; if (S < 0) { cout << 0 << endl; return 0; } else if (S == 0) { cout << 1 << endl; return 0; } int dp[N + 1][S + 1]; memset(dp[0], 0, sizeof(dp[0])); dp[0][0] = 1; for (int i = 1; i <= N; i ++) { for (int j = 0; j <= S; j ++) { if (j < i) { dp[i][j] = dp[i-1][j]; } else { dp[i][j] = (dp[i-1][j] + dp[i][j-i]) % div; } } } cout << dp[N][S] << endl; return 0; }