#include using namespace std; #include using namespace atcoder; //using mint = modint998244353; using mint = modint1000000007; typedef long long ll; typedef unsigned long long ull; #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() const int MAX = 1e9; const int MIN = -1*1e9; const ll MAXLL = 1e18; const ll MINLL = -1*1e18; //const ll MOD = 998244353; //const ll MOD = 1000000007; vector> Partition(int A, int B) { vector> DP(A+1,vector(B+1)); for(int i = 0; i <= B; i++) DP[0][i] = 1; for(int i = 1; i <= A; i++) { for(int j = 1; j <= B; j++) { if(i < j) DP[i][j] = DP[i][j-1]; else DP[i][j] = DP[i][j-1] + DP[i-j][j]; } } return DP; } int main() { ll N,S,K; cin >> N >> S >> K; ll Cost = N*(N-1)/2*K; vector> DP = Partition(20010,110); if(S < Cost) { cout << 0 << endl; return 0; } cout << DP[S-Cost][N].val() << endl; return 0; }