#include <bits/stdc++.h>
inline int read() {
  int first = 0, f = 1;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = 0;
    c = getchar();
  }
  while (isdigit(c)) first = first * 10 + c - '0', c = getchar();
  return f ? first : -first;
}
const int mod = 998244353;
const int N = 10005;
int p, s, r, ans;
int jc[N], jv[N], inv[N];
int qpow(int n, int k) {
  int res = 1;
  for (; k; k >>= 1, n = 1ll * n * n % mod)
    if (k & 1) res = 1ll * n * res % mod;
  return res;
}
void init(const int& N) {
  jc[0] = 1;
  for (int i = 1; i <= N; ++i) jc[i] = 1ll * jc[i - 1] * i % mod;
  jv[N] = qpow(jc[N], mod - 2);
  for (int i = N - 1; i >= 0; --i) jv[i] = 1ll * jv[i + 1] * (i + 1) % mod;
  inv[1] = 1;
  for (int i = 2; i <= N; ++i)
    inv[i] = 1ll * (mod - mod / i) * inv[mod % i] % mod;
}
int C(int n, int m) { return 1ll * jc[n] * jv[m] % mod * jv[n - m] % mod; }
int g(int n, int m) { return C(n + m - 1, m - 1); }
int f(int first, int second, int z) {
  if (!first && !second) return 1;
  int res = 0, flg = (first & 1) ? -1 : 1;
  for (int i = 0; i <= first; ++i, flg *= -1)
    if (second - (z + 1) * (first - i) >= 0)
      res = (res + 1ll * flg * C(first, i) *
                       g(second - (z + 1) * (first - i), first) % mod) %
            mod;
  return res;
}
signed main() {
  init(5000);
  p = read(), s = read(), r = read();
  for (int i = r; i <= s; ++i) {
    for (int j = 0; (j + 1) * i <= s && j < p; ++j) {
      ans = (ans + 1ll * C(p - 1, j) * f(p - j - 1, s - (j + 1) * i, i - 1) %
                       mod * inv[j + 1] % mod) %
            mod;
    }
  }
  ans = 1ll * ans * qpow(C(s - r + p - 1, p - 1), mod - 2) % mod;
  printf("%d\n", ans);
  return 0;
}
