#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
inline long long read() {
  char c = getchar();
  long long x = 0;
  bool f = 0;
  for (; !isdigit(c); c = getchar()) f ^= !(c ^ 45);
  for (; isdigit(c); c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
  if (f) x = -x;
  return x;
}
inline long long qpow(long long a, long long b = 998244353 - 2) {
  long long res = 1;
  for (; b; b >>= 1, a = a * a % 998244353)
    if (b & 1) res = res * a % 998244353;
  return res;
}
inline void add(long long& a, long long b) {
  a += b;
  if (a >= 998244353) a -= 998244353;
}
long long fac[5005], inv[5005];
void prework(long long n) {
  fac[0] = 1;
  for (register long long i = (1); i <= (n); ++i)
    fac[i] = fac[i - 1] * i % 998244353;
  inv[n] = qpow(fac[n]);
  for (register long long i = (n - 1); i >= (0); --i)
    inv[i] = inv[i + 1] * (i + 1) % 998244353;
}
inline long long C(long long n, long long m) {
  return fac[n] * inv[m] % 998244353 * inv[n - m] % 998244353;
}
long long p, s, r, res;
long long calc(long long n, long long m, long long x) {
  long long res = 0;
  for (register long long i = (0); i <= (min(m, n / x)); ++i)
    res += ((i & 1) ? 998244353 - 1 : 1) *
           (C(m, i) * C(n - x * i + m - 1, m - 1) % 998244353) % 998244353,
        res %= 998244353;
  return res;
}
signed main() {
  prework(5000);
  p = read(), s = read(), r = read();
  if (p == 1) {
    puts("1");
    return 0;
  }
  for (register long long x = (r); x <= (s); ++x) {
    if (x * p < s) continue;
    for (register long long i = (1); i <= (p); ++i) {
      if (i * x > s || i * x + (p - i) * (x - 1) < s) continue;
      if (i == p)
        res += (i * x == s) * qpow(i) % 998244353;
      else
        res += C(p - 1, i - 1) * calc(s - i * x, p - i, x) % 998244353 *
               qpow(i) % 998244353;
      res %= 998244353;
    }
  }
  cout << res * qpow(C(s - r + p - 1, p - 1)) % 998244353;
  return 0;
}
