#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;
}