#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ios std::ios_base::sync_with_stdio(false); #define ll long long #define pb push_back #define fi(ss) freopen (ss,"r",stdin) #define fo(ss) freopen (ss,"w",stdout) #define sz(v) ((int)((v).size())) #define all(x) (x).begin(),(x).end() #define REP(i, v) for(int i=0;i pii; typedef pair tri; const int maxn = 2 * 100005; using namespace std; using namespace std; int n,s,k; int mod = 1000*1000*1000 + 7; int dp[101][20005]; int solve(int ind,int s) { if (s < 0) { return 0; } if (ind == n) { return s == 0 ? 1 : 0; } if (dp[ind][s] != -1) { return dp[ind][s]; } int ret = 0; ret += solve(ind + 1,s); ret %= mod; ret += solve(ind,s - (n - ind)); ret %= mod; return dp[ind][s] = ret; }; int main() { cin >> n >> s >> k; memset(dp,-1,sizeof(dp)); for (int i = 0 ; i < n ; ++i) { s -= i * k; } cout << solve(0,s) << "\n"; }