#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void read(T &t) {
  t = 0;
  char c = getchar();
  int f = 1;
  while (c < '0' || c > '9') {
    if (c == '-') f = -f;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    t = (t << 3) + (t << 1) + c - '0';
    c = getchar();
  }
  t *= f;
}
template <typename T, typename... Args>
inline void read(T &t, Args &...args) {
  read(t);
  read(args...);
}
template <typename T>
inline void write(T x) {
  if (x < 0) {
    x = -x;
    putchar('-');
  }
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
int mul(int a, int b) { return 1ll * a * b % 998244353; }
int dec(int a, int b) { return a >= b ? a - b : a + 998244353 - b; }
int add(int a, int b) { return a + b >= 998244353 ? a + b - 998244353 : a + b; }
int qkpow(int a, int b) {
  int res = 1;
  for (; b; b >>= 1, a = mul(a, a))
    if (b & 1) res = mul(res, a);
  return res;
}
int inv(int a) { return qkpow(a, 998244353 - 2); }
int p, s, r, ans, fac[5205], ifac[5205];
int binom(int a, int b) {
  if (a < 0 || b < 0 || a < b) return 0;
  return mul(fac[a], mul(ifac[b], ifac[a - b]));
}
int Solve(int n, int m, int lim) {
  if (n == 0) return 1;
  if (n < 0) return 0;
  int res = 0;
  for (register int i = 0, tmp; i <= m; ++i)
    tmp = mul(binom(m, i), binom(n - i * lim + m - 1, m - 1)),
    res = (i & 1 ? dec(res, tmp) : add(res, tmp));
  return res;
}
signed main() {
  read(p, s, r);
  int up = 5100;
  fac[0] = 1;
  for (register int i = 1; i <= up; ++i) fac[i] = mul(fac[i - 1], i);
  ifac[up] = inv(fac[up]);
  for (register int i = up; i; --i) ifac[i - 1] = mul(ifac[i], i);
  for (register int x = r; x <= s; ++x)
    for (register int i = 1; i <= p; ++i)
      if ((p - i) * (x - 1) + i * x >= s)
        ans = add(ans, mul(Solve(s - i * x, p - i, x),
                           mul(binom(p - 1, i - 1), mul(ifac[i], fac[i - 1]))));
  write(mul(ans, inv(binom(s - r + p - 1, p - 1)))), putchar('\n');
  return 0;
}
