#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9')
    x = (x << 3) + (x << 1) + (c ^ '0'), c = getchar();
  return x * f;
}
const int N = 6e3 + 5, M = 205, mod = 998244353;
inline int inc(int x, int y) {
  x += y - mod;
  return x + (x >> 31 & mod);
}
inline int del(int x, int y) {
  x -= y;
  return x + (x >> 31 & mod);
}
inline int mul(int x, int y) { return 1ll * x * y % mod; }
inline void Inc(int &x, int y) { x = inc(x, y); }
inline void Del(int &x, int y) { x = del(x, y); }
inline long long Pow(long long x, int k) {
  long long res = 1;
  while (k) {
    if (k & 1) res = res * x % mod;
    x = x * x % mod;
    k >>= 1;
  }
  return res;
}
int c[N][N];
void init(int n, int m) {
  c[0][0] = 1;
  for (int i = 1; i <= n; i++) {
    c[i][0] = 1;
    for (int j = 1; j <= min(i, m); j++)
      c[i][j] = inc(c[i - 1][j - 1], c[i - 1][j]);
  }
}
inline int C(const int n, const int m) {
  if (n < m || n < 0 || m < 0) return 0;
  return c[n][m];
}
inline int calc(const int n, const int m, const int x) {
  if (n == 0) return 1;
  if (n < 0) return 0;
  int res = 0;
  for (int i = 0, k = -1; i <= m; i++) {
    k *= -1;
    if (k > 0)
      Inc(res, mul(C(m, i), C(n - i * x + m - 1, m - 1)));
    else
      Del(res, mul(C(m, i), C(n - i * x + m - 1, m - 1)));
  }
  return res;
}
int p, s, r, ans, inv[M];
int main() {
  p = read(), s = read(), r = read();
  init(s + p, 100);
  for (int i = 1; i <= p; i++) inv[i] = Pow(i, mod - 2);
  for (int x = r; x <= s; x++)
    for (int i = 1; i <= p; i++) {
      if ((p - i) * (x - 1) + i * x < s) continue;
      Inc(ans, mul(mul(C(p - 1, i - 1), calc(s - i * x, p - i, x)), inv[i]));
    }
  printf("%d\n", mul(ans, Pow(C(s - r + p - 1, p - 1), mod - 2)));
  return 0;
}
