#include<bits/stdc++.h>
using namespace std;

#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 
using namespace __gnu_pbds; 

#define ll long long
#define db double
#define el "\n"
#define ld long double
#define rep(i,n) for(int i=0;i<n;i++)
#define rev(i,n) for(int i=n;i>=0;i--)
#define rep_a(i,a,n) for(int i=a;i<n;i++)
#define tr(ds, it) for(auto it=ds.begin(); it!=ds.end(); it++)
#define rtr(ds, it) for(auto it=ds.rbegin(); it!=ds.rend(); it++)
#define all(ds) ds.begin(), ds.end()
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
typedef priority_queue <ll> pq;
typedef vector< long long > vi;
typedef pair<long long, long long> ii;
#define o_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update> 
#define graph vector<vi>

const ll mod = 998244353;
ll po(ll x, ll n ){ 
    ll ans=1;
     while(n>0){
         if(n&1) ans=(ans*x)%mod;
         x=(x*x)%mod;
         n/=2;
     }
     return ans;
}

ll fac[5005], ifac[5005];

ll ncr(ll a,ll b){
    if(a<b || a<0 || b<0) return 0;
    else return (fac[a]*((ifac[b]*ifac[a-b])%mod))%mod;
}



int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r" , stdin);
    freopen("output.txt", "w" , stdout);
    #endif
    int T=1;
    //cin >> T;
    while(T--){
        ll p,r,s;
        cin>>p>>s>>r;
        fac[0]=1;
        rep_a(i,1,5005) fac[i]=(i*fac[i-1])%mod;
        rep(i,5005) ifac[i]=po(fac[i], mod-2);
        if(r>s/2) cout<<1<<el;
        else{
            ll ans=0,z,tmp;

            rep(i,s-r+1){
            if((s-i)*p<s) break;
              rep(j,p){
                tmp=0;
                rep(k,p-j){
                    if(i-(j+k)*(s-i)<0) break;
                    z=ncr(p-1-j,k);
                    if(p-j!=1)z*=ncr(p-2-j+i-j*(s-i)-k*(s-i), p-2-j);
                    z%=mod;
                    if(k&1) tmp-=z;
                    else tmp+=z;
                    tmp=(tmp+mod)%mod;
                } 
                tmp*=ncr(p-1,j);
                tmp%=mod;
                tmp*=po(j+1,mod-2);
                tmp%=mod;
                ans+=tmp;
              }   
            }
            ans*=po(ncr(p+s-r-1,p-1), mod-2);
            ans%=mod;
            cout<<ans<<el;
        }
    }

    return 0;
}