#include <bits/stdc++.h>
using namespace std;
long long modx(long long Base, long long exponent) {
  long long ans = 1;
  if (Base == 1) return Base;
  while (exponent) {
    if (exponent & 1) ans = (ans * Base) % 998244353LL;
    Base = (Base * Base) % 998244353LL;
    exponent = exponent >> 1;
  }
  return ans;
}
long long inmodx(long long num) { return (modx(num, 998244353LL - 2LL)); }
bool cmp(pair<int, int> a, pair<int, int> b) {
  if (a.second < b.second) return 1;
  if (a.second > b.second) return 0;
  if (a.first <= b.first) return 1;
  return 0;
}
const int N = (1e2) + 9;
const int M = (5e3) + 9;
const int LOGN = ((int)log2(N)) + 3;
const int LOGM = ((int)log2(M)) + 3;
const int BUCK = 900;
long long dp[N][M], sum[N][M], inv[M + M], fact[M + M], ifact[M + M];
int n, s, r;
void pre() {
  int i, j;
  fact[0] = ifact[0] = 1;
  for (i = (1); i < (M + M); i++) {
    fact[i] = (fact[i - 1] * 1LL * i) % 998244353LL;
    inv[i] = inmodx(i);
    ifact[i] = (ifact[i - 1] * inv[i]) % 998244353LL;
  }
  return;
}
inline long long choose(int n, int r) {
  if (r < 0 || n < 0 || n < r) return 0LL;
  long long ans = (fact[n] * ifact[r]) % 998244353LL;
  ans = (ans * ifact[n - r]) % 998244353LL;
  return ans;
}
inline long long calc_sum(int ind, int l, int r) {
  if (l > r) return 0LL;
  return ((sum[ind][r] - sum[ind][l] + dp[ind][l] + 998244353LL) % 998244353LL);
}
long long calc_multinomial(int m, int r, int x) {
  if (m <= 0) {
    if (r == 0) return 1LL;
    return 0LL;
  }
  long long ans = 0, val;
  int i;
  for (i = (0); i < (m + 1); i++) {
    if (i * x > r) break;
    val = (choose(m, i) * choose(m + r - i * x - 1, m - 1)) % 998244353LL;
    if (i & 1)
      ans = (ans + 998244353LL - val);
    else
      ans = (ans + val);
  }
  ans %= 998244353LL;
  return ans;
}
long long func(int x) {
  long long ans = 0, val;
  int i, sum_left;
  for (i = (0); i < (n); i++) {
    sum_left = s - x - i * x;
    if (sum_left < 0) break;
    val = (choose(n - 1, i) * calc_multinomial(n - 1 - i, sum_left, x)) %
          998244353LL;
    ans = (ans + val * inv[1 + i]) % 998244353LL;
  }
  return ans;
}
long long calc_total() {
  long long ans = 0;
  int i, sum_left;
  for (i = (r); i < (s + 1); i++) {
    sum_left = s - i;
    if (sum_left <= 0) {
      ans = (ans + 1LL) % 998244353LL;
      break;
    }
    ans = (ans + choose(n - 1 + sum_left - 1, sum_left)) % 998244353LL;
  }
  return ans;
}
void solve() {
  int i;
  long long ans = 0, tot;
  pre();
  cerr << "pre passed\n";
  cin >> n >> s >> r;
  if (n == 1) {
    cout << 1 << '\n';
    return;
  }
  for (i = (r); i < (s + 1); i++) ans += func(i);
  cerr << "func passed\n";
  tot = calc_total();
  cerr << "calc_total passed\n";
  cerr << ans << " " << tot << '\n';
  ans = (ans * inmodx(tot)) % 998244353LL;
  cout << ans << '\n';
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  clock_t clk;
  clk = clock();
  int t = 1, cs;
  cout << fixed << setprecision(3);
  for (cs = (1); cs < (t + 1); cs++) {
    solve();
  }
  clk = clock() - clk;
  cerr << fixed << setprecision(6) << "Time: " << ((double)clk) / CLOCKS_PER_SEC
       << "\n";
  return 0;
}
