#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  char ch = 0;
  long long x = 0, flag = 1;
  while (!isdigit(ch)) {
    ch = getchar();
    if (ch == '-') flag = -1;
  }
  while (isdigit(ch)) {
    x = (x << 3) + (x << 1) + ch - '0';
    ch = getchar();
  }
  return x * flag;
}
const long long mo = 998244353;
long long ksm(long long x, long long k) {
  long long ans = 1;
  while (k) {
    if (k & 1) ans = (ans * x) % mo;
    k >>= 1;
    x = (x * x) % mo;
  }
  return ans;
}
long long fac[220000], vac[220000];
long long inv(long long x) { return ksm(x, mo - 2); }
long long c(long long n, long long m) {
  return (fac[n] * ((vac[m] * vac[n - m]) % mo)) % mo;
}
int main() {
  long long n = read(), s = read(), r = read(), ans = 0;
  if (n == 1) {
    printf("1");
    return 0;
  }
  fac[0] = vac[0] = 1;
  for (long long i = 1; i <= 200000; i++)
    fac[i] = (fac[i - 1] * i) % mo, vac[i] = (vac[i - 1] * inv(i)) % mo;
  for (long long o = r; o <= s; o++)
    for (long long i = 1; i <= n && i * o <= s; i++) {
      long long m = n - i, v = s - i * o, x = 0;
      for (long long k = 0, flag = 1; k <= m && v - k * o >= 0;
           k++, flag = -flag)
        x = (x + flag * c(m, k) * c(v - k * o + m - 1, m - 1)) % mo;
      if (!m && !v) x = 1;
      ans = (ans + ((inv(i) * ((c(n - 1, i - 1) * x) % mo)) % mo)) % mo;
    }
  ans = (ans * inv(c(s - r + n - 1, n - 1))) % mo;
  cout << ans;
  return 0;
}
