#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
const long long maxs = 5e3 + 5;
long long inv[maxs], fact[maxs], fact_inv[maxs];
inline long long calc_C(long long n, long long m) {
  return (n < 0 || m < 0 || n < m)
             ? 0
             : fact[n] * fact_inv[m] % MOD * fact_inv[n - m] % MOD;
}
inline long long calc_Crep(long long n, long long m) {
  return calc_C(n + m - 1, m - 1);
}
long long qpow(long long base, long long expo) {
  long long ans = 1;
  for (; expo; expo >>= 1LL) {
    if (expo & 1LL) ans = ans * base % MOD;
    base = base * base % MOD;
  }
  return ans;
}
inline long long calc_inv(long long x) {
  return x < maxs ? inv[x] : qpow(x, MOD - 2);
}
inline void init() {
  inv[1] = 1;
  for (long long i = 2; i < maxs; i++)
    inv[i] = (MOD - MOD / i) * inv[MOD % i] % MOD;
  fact[0] = 1;
  for (long long i = 1; i < maxs; i++) fact[i] = fact[i - 1] * i % MOD;
  fact_inv[0] = 1;
  for (long long i = 1; i < maxs; i++)
    fact_inv[i] = fact_inv[i - 1] * inv[i] % MOD;
}
long long calc_f(long long n, long long m, long long maxv) {
  if (n == 0) return 1;
  long long ans = calc_Crep(n, m);
  for (long long i = 1; i <= m && n - i * maxv >= 0; i++)
    ans = (ans + (i % 2 ? -1LL : 1LL) * calc_Crep(n - i * maxv, m) % MOD *
                     calc_C(m, i)) %
          MOD;
  return (ans % MOD + MOD) % MOD;
}
int main() {
  init();
  long long p, s, r, ans = 0;
  scanf("%lld%lld%lld", &p, &s, &r);
  for (long long score1 = r; score1 <= s; score1++)
    for (long long j = 0; j < p && score1 * (1 + j) <= s; j++) {
      long long a = calc_C(p - 1, j);
      long long b = calc_f(s - score1 * (1 + j), p - 1 - j, score1);
      ans = (ans + inv[j + 1] * calc_C(p - 1, j) % MOD *
                       calc_f(s - score1 * (1 + j), p - 1 - j, score1)) %
            MOD;
    }
  printf("%lld\n", ans * calc_inv(calc_Crep(s - r, p)) % MOD);
  return 0;
}
