#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
const long long MAXN = 5107;
long long sum(long long a, long long b) {
  return a + b >= MOD ? a + b - MOD : a + b;
}
long long sub(long long a, long long b) {
  return a - b < 0 ? a - b + MOD : a - b;
}
long long mul(long long a, long long b) { return (a * b) % MOD; }
long long pw(long long a, long long b) {
  if (b == 0) return 1;
  long long r = pw(a, b / 2);
  r = mul(r, r);
  if (b % 2) r = mul(r, a);
  return r;
}
long long fct[MAXN], inv[MAXN], ulta[MAXN];
long long p, s, r;
long long nCr(long long n, long long r) {
  return mul(fct[n], mul(inv[r], inv[n - r]));
}
long long f(long long p, long long s, long long b) {
  if (p == 0) {
    if (s == 0) return 1;
    return 0;
  }
  long long ans = nCr(s + p - 1, p - 1);
  long long sgn = 1;
  for (long long i = 1; i <= p; i++) {
    sgn = mul(sgn, MOD - 1);
    if (i * b > s) break;
    long long ss = s - i * b;
    ans = sum(ans, mul(sgn, mul(nCr(p, i), nCr(ss + p - 1, p - 1))));
  }
  return ans;
}
int main() {
  fct[0] = inv[0] = 1;
  for (long long i = 1; i < MAXN; i++) {
    fct[i] = mul(fct[i - 1], i);
    inv[i] = pw(fct[i], MOD - 2);
    ulta[i] = pw(i, MOD - 2);
  }
  cin >> p >> s >> r;
  if (s == 0 && r == 0) {
    cout << pw(p, MOD - 2) << endl;
    return 0;
  }
  long long tot = nCr(s - r + p - 1, p - 1);
  if (r == 0) r++;
  long long ans = 0;
  for (long long i = r; i <= s; i++) {
    for (long long j = 1; j <= p; j++) {
      if (j * i > s) break;
      ans = sum(ans,
                mul(ulta[j], mul(nCr(p - 1, j - 1), f(p - j, s - j * i, i))));
    }
  }
  ans = mul(ans, pw(tot, MOD - 2));
  cout << ans << endl;
  return 0;
}
