#include using namespace std; int N, S, K; int dp[110][20010]; int dfs(int i, int k) { if (k > S) return 0; if (dp[i][k] != -1) return dp[i][k]; if (i == N) { return dp[i][k] = (k == S); } int ret = dfs(i + 1, k + K * (N - i - 1)) + dfs(i, k + N - i); return dp[i][k] = 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; }