#include <bits/stdc++.h>
using namespace std;
void use_cio() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
}
template <class L, class R>
ostream &operator<<(ostream &os, pair<L, R> P) {
  return os << "(" << P.first << "," << P.second << ")";
}
template <class T>
ostream &operator<<(ostream &os, vector<T> V) {
  os << "[";
  for (auto x : V) os << x << ", ";
  return os << "]";
}
template <typename... Args>
void dbg(Args... args) {
  ((cout << args << " "), ...);
  cout << "\n";
}
const int MOD = 998244353;
int p, s, r;
inline long long add(long long a, long long b) { return (a + b) % MOD; }
inline long long mul(long long a, long long b) { return (a * b) % MOD; }
long long pow_mod(long long x, long long n) {
  long long ret = 1;
  for (; n; n >>= 1, x = mul(x, x))
    if (n & 1) ret = mul(ret, x);
  return ret;
}
long long inv_mod(long long x) { return pow_mod(x, MOD - 2); }
long long ncr(int n, int m) {
  if (m > n - m) m = n - m;
  long long ret = 1;
  for (int i = 0; i < (m); i++) ret = mul(ret, mul(n - i, inv_mod(i + 1)));
  return ret;
}
long long cal_nc(int p, int s) {
  if (s == 0) return 1;
  if (p == 0 || s < 0) return 0;
  return ncr(s + p - 1, p - 1);
}
long long cal(int n, int s, int u) {
  if (u == 0) return 0;
  long long ans = cal_nc(n, s);
  for (int i = 1, alt = -1; u * i <= s; i++, alt *= -1) {
    ans = add(ans, mul(alt, mul(ncr(n, i), cal_nc(n, s - u * i))));
    if (ans < 0) ans += MOD;
  }
  return ans;
}
int main() {
  use_cio();
  cin >> p >> s >> r;
  long long tot = 0, win = 0;
  for (int i = r; i <= s; i++) {
    tot = add(tot, cal_nc(p - 1, s - i));
    if (i == 0) {
      if (s == 0) win = add(win, inv_mod(p));
      continue;
    }
    win = add(win, cal(p - 1, s - i, i));
    for (int j = 2; i * j <= s; j++) {
      win = add(win, mul(inv_mod(j),
                         mul(ncr(p - 1, j - 1), cal(p - j, s - i * j, i))));
    }
  }
  long long ans = mul(win, inv_mod(tot));
  dbg(ans);
}
