#include <bits/stdc++.h>
using namespace std;
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v) {
  os << "{";
  for (typename vector<T>::const_iterator vi = v.begin(); vi != v.end(); ++vi) {
    if (vi != v.begin()) os << ", ";
    os << *vi;
  }
  os << "}";
  return os;
}
const int MAX_CHOOSE = 5200;
const int MOD = 998244353;
long long mod_inv(long long a, long long m = MOD) {
  return a == 1 ? 1 : m - mod_inv(m % a, a) * m / a;
}
vector<int> choose[MAX_CHOOSE];
int mod_add(int a, int b) {
  int sum = a + b;
  return sum < MOD ? sum : sum - MOD;
}
void precompute_choose() {
  for (int n = 0; n < MAX_CHOOSE; n++) {
    choose[n].assign(n + 1, 0);
    choose[n][0] = choose[n][n] = 1;
    for (int r = 1; r < n; r++)
      choose[n][r] = mod_add(choose[n - 1][r], choose[n - 1][r - 1]);
  }
}
int ways_to_distribute(int score, int players) {
  if (score == 0) return 1;
  if (players == 0) return 0;
  return choose[score + players - 1][score];
}
vector<int> new_counts;
void add_one(vector<int> &counts, int me) {
  new_counts.resize(counts.size());
  int sum = 0;
  for (int i = 0; i < (int)counts.size(); i++) {
    sum += counts[i];
    if (i >= me) sum -= counts[i - me];
    if (sum >= MOD)
      sum -= MOD;
    else if (sum < 0)
      sum += MOD;
    new_counts[i] = sum;
  }
  swap(counts, new_counts);
}
int main() {
  precompute_choose();
  int P, S, R;
  cin >> P >> S >> R;
  if (P == 1) {
    cout << 1 << '\n';
    return 0;
  }
  if (S == 0) {
    cout << mod_inv(P) << '\n';
    return 0;
  }
  long long total = 0, denominator = 0;
  for (int me = R; me <= S; me++) {
    long long ways = ways_to_distribute(S - me, P - 1);
    denominator = (denominator + ways) % MOD;
    if (me > S - me) {
      total = (total + ways) % MOD;
      continue;
    }
    if (me * P < S) continue;
    int max_same = S / me;
    assert(max_same >= 2 && max_same <= P);
    vector<int> counts(S - me + 1, 0);
    counts[0] = 1;
    for (int i = 0; i < P - max_same; i++) add_one(counts, me);
    for (int same = max_same; same > 0; same--) {
      long long less_than = counts[S - same * me];
      total =
          (total + less_than * choose[P - 1][same - 1] % MOD * mod_inv(same)) %
          MOD;
      add_one(counts, me);
    }
  }
  total %= MOD;
  total = total * mod_inv(denominator) % MOD;
  cout << total << '\n';
}
