#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 200100;
const long long INF = 2000000100;
const long long MOD = 998244353;
long long P, R, S;
long long ans;
struct pt {
  long long x, y;
  pt(long long x0, long long y0) { x = x0, y = y0; }
  pt operator*(long long n) { return pt(x * n, y * n); }
  pt operator+(pt p) { return pt(x + p.x, y + p.y); }
  pt operator-(pt p) { return pt(x - p.x, y - p.y); }
};
long long gcd(long long a, long long b, pt pa, pt pb) {
  if (b == 1) return pb.x;
  return gcd(b, a % b, pb, pa - (pb * (a / b)));
}
long long inv(long long a) {
  return (gcd(MOD, a, pt(0, 1), pt(1, 0)) + MOD) % MOD;
}
long long conv(long long a, long long b) { return ((a % MOD) * inv(b)) % MOD; }
long long comb[6000][110];
void makecomb() {
  for (long long i = 0; i < 5500; i++) {
    comb[i][0] = 1;
  }
  for (long long k = 1; k < 105; k++) {
    for (long long i = 1; i < 5500; i++) {
      comb[i][k] = (comb[i - 1][k - 1] + comb[i - 1][k]) % MOD;
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> P >> S >> R;
  makecomb();
  ans = 0;
  for (long long r = R; r <= S; r++) {
    for (long long m = 1; m < P && m * r <= S; m++) {
      long long a = 0;
      long long s = 1;
      for (long long i = 0; i <= P - m && S - m * r - i * r >= 0; i++) {
        a = ((a + s * comb[P - m][i] *
                      comb[S - m * r + P - m - 1 - i * r][P - m - 1]) %
                 MOD +
             MOD) %
            MOD;
        s *= -1;
      }
      ans += conv(a * comb[P - 1][m - 1], m);
    }
    if (P * r == S) ans += conv(1, P);
  }
  ans *= inv(comb[S - R + P - 1][P - 1]);
  ans %= MOD;
  cout << ans << "\n";
}
