#include using namespace std; int N, S, K; int dp[110][20010]; int dfs(int i, int t) { if (t > S) return 0; if (dp[i][t] != -1) return dp[i][t]; if (i == N) { return dp[i][t] = (t == S); } int ret = dfs(i + 1, t + K * (N - i - 1)) + dfs(i, t + N - i); return dp[i][t] = ret % 1000000007; } int main() { cin >> N >> S >> K; for (int i = 0; i < 110; i++) { for (int j = 0; j < 20010; j++) { dp[i][j] = -1; } } cout << dfs(0, 0) << '\n'; return 0; }