#include <bits/stdc++.h>
using namespace std;
struct md {
  int v;
  md(int _v = 0) { v = _v; }
  void operator+=(md a) { v = (0LL + v + a.v) % 998244353; }
  void operator-=(md a) { v = (0LL + v - a.v + 998244353) % 998244353; }
  void operator*=(md a) { v = (1LL * v * a.v) % 998244353; }
};
md operator+(md a, md b) { return (0LL + a.v + b.v) % 998244353; }
md operator-(md a, md b) { return (0LL + a.v - b.v + 998244353) % 998244353; }
md operator*(md a, md b) { return (1LL * a.v * b.v) % 998244353; }
md bigmod(md b, long long i) {
  md r(1);
  for (int j = (29); j >= (0); j--) {
    r *= r;
    if ((i >> j) & 1) r *= b;
  }
  return r;
}
md fac[6005], inv[6005];
md ncr(int n, int r) { return fac[n] * inv[r] * inv[n - r]; }
int main() {
  int p, r, s;
  scanf("%d %d %d", &p, &s, &r);
  fac[0] = inv[0] = 1;
  for (int i = (1); i <= (6000); i++) {
    fac[i] = fac[i - 1] * i;
    inv[i] = bigmod(fac[i], 998244353 - 2);
  }
  md ans = 0;
  for (int i = (r); i <= (s); i++) {
    for (int j = (0); j <= (p - 1); j++) {
      md cnt = 0;
      for (int k = (0); k <= (p - 1 - j); k++) {
        if (s < (j + k + 1) * i) break;
        md v;
        if (s == (j + k + 1) * i && p - 1 - j == 0) {
          v = 1;
        } else {
          v = ncr(p - 1 - j, k) *
              ncr(s - (j + k + 1) * i + (p - 1 - j - 1), p - 1 - j - 1);
        }
        if (~k & 1)
          cnt += v;
        else
          cnt -= v;
      }
      cnt *= ncr(p - 1, j);
      ans += cnt * bigmod(j + 1, 998244353 - 2);
    }
  }
  ans *= bigmod(ncr(s - r + p - 1, p - 1), 998244353 - 2);
  printf("%d\n", ans.v);
  return 0;
}
