#include <bits/stdc++.h>
using namespace std;
long long read() {
  long long nm = 0, fh = 1;
  char cw = getchar();
  for (; !isdigit(cw); cw = getchar())
    if (cw == '-') fh = -fh;
  for (; isdigit(cw); cw = getchar()) nm = nm * 10 + (cw - '0');
  return nm * fh;
}
long long n, m, fac[100020], ifac[100020], S, R, sum, ans;
long long qpow(long long x, long long sq) {
  long long res = 1;
  for (; sq; sq >>= 1, x = x * x % 998244353)
    if (sq & 1) res = res * x % 998244353;
  return res;
}
long long C(long long tot, long long tk) {
  if (tot < 0 || tk < 0 || tot < tk) return 0ll;
  return fac[tot] * ifac[tk] % 998244353 * ifac[tot - tk] % 998244353;
}
long long dev(long long tot, long long tk) {
  if (!tk) {
    return (tot != 0 ? 0 : 1);
  }
  if (tot < 0) return 0;
  return C(tot + tk - 1, tk - 1);
}
int main() {
  n = read(), m = read(), R = read(), fac[0] = 1;
  for (long long i = 1; i < 100020; i++) fac[i] = fac[i - 1] * i % 998244353;
  ifac[100020 - 1] = qpow(fac[100020 - 1], 998244353 - 2);
  for (long long i = 100020 - 1; i; i--) ifac[i - 1] = ifac[i] * i % 998244353;
  for (long long gg = R; gg <= m; gg++) {
    long long res = 0, rem = m - gg;
    for (long long ev = 0; ev < n; ev++) {
      long long now = 0, rst = rem - ev * gg;
      if (rst < 0) break;
      for (long long i = 0, kd = 1; i <= n - ev - 1; i++, kd = -kd)
        now +=
            kd * C(n - 1 - ev, i) * dev(rst - i * gg, n - 1 - ev) % 998244353,
            now %= 998244353;
      ans += qpow(ev + 1, 998244353 - 2) * C(n - 1, ev) % 998244353 *
             (now + 998244353) % 998244353,
          (ans >= 998244353) ? (ans -= 998244353) : 0;
    }
  }
  printf("%lld\n", ans * qpow(dev(m - R, n), 998244353 - 2) % 998244353);
  return 0;
}
