#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll N = 5000;
const ll M = 998244353;
ll mpow(ll x, ll y, ll m = M) {
  if (y == 0) {
    return 1;
  } else {
    ll z = mpow(x, y / 2, m);
    return z * z % m * (y % 2 ? x % m : 1) % m;
  }
}
ll f[N + 1], f_inv[N + 1];
ll C(int n, int k) { return f[n] * f_inv[k] % M * f_inv[n - k] % M; }
ll part(int n, int k) { return C(n + k - 1, k - 1); }
ll allocate(int S, int p, int u) {
  if (p == 0) {
    return S == 0 ? 1 : 0;
  } else {
    ll ans = part(S, p);
    bool neg = true;
    for (int i = 1; i <= p and S - u * i >= 0; i++) {
      if (neg) {
        ans = (ans - (C(p, i) * part(S - u * i, p) % M) + M) % M;
      } else {
        ans = (ans + C(p, i) * part(S - u * i, p) % M) % M;
      }
      neg = not neg;
    }
    return ans;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  f[0] = 1;
  f_inv[0] = 1;
  for (int i = 1; i <= N; i++) {
    f[i] = (f[i - 1] * i) % M;
    f_inv[i] = mpow(f[i], M - 2);
  }
  int p, s, r;
  cin >> p >> s >> r;
  ll P = 0;
  for (int a1 = r; a1 <= s; a1++) {
    for (int i = 0; i <= p - 1; i++) {
      int S = s - (a1 + a1 * i);
      if (S >= 0) {
        P += C(p - 1, i) * allocate(S, p - 1 - i, a1) % M * mpow(i + 1, M - 2) %
             M;
      }
    }
  }
  ll Q = part(s - r, p);
  cout << P * mpow(Q, M - 2) % M << endl;
  return 0;
}
