#pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #pragma GCC target("avx,avx2") #include <bits/stdc++.h> #define INF 1000000001LL #define LNF 1000000000000000001LL #define MOD 1000000007LL #define MAX 502 #define long long long #define all(x) x.begin(),x.end() using namespace std; long dp[100][20001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n,s,k; cin >> n >> s >> k; for(int i = 0; i<=s; i+=n) dp[0][i] = 1; for(int i = 1; i<n; i++) { vector<long> hap(s+1); for(int j = 0; j<=s; j++) { if(j+k*(n-i) <= s) { hap[j+k*(n-i)]+=dp[i-1][j]; hap[j+k*(n-i)]%=MOD; } } for(int j = 0; j<n-i; j++) { long sum = 0; for(int p = j; p<=s; p+=n-i) { sum+=hap[p]; sum%=MOD; dp[i][p] = sum; } } } cout << dp[n-1][s] << endl; return 0; }