#include <bits/stdc++.h>
using namespace std;
const int N = 10000 + 10, mod = 998244353;
int rd() {
  int x = 0, w = 1;
  char ch = 0;
  while (ch < '0' || ch > '9') {
    if (ch == '-') w = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + (ch ^ 48);
    ch = getchar();
  }
  return x * w;
}
int fpow(int a, int b) {
  int an = 1;
  while (b) {
    if (b & 1) an = 1ll * an * a % mod;
    a = 1ll * a * a % mod, b >>= 1;
  }
  return an;
}
int ginv(int a) { return fpow(a, mod - 2); }
int n, k, m, fac[N], iac[N], inv[N];
int C(int a, int b) {
  return b < 0 || a < b ? 0 : 1ll * fac[a] * iac[b] % mod * iac[a - b] % mod;
}
int wk(int a, int b) { return !a && !b ? 1 : C(a + b - 1, b - 1); }
int main() {
  fac[0] = 1;
  for (int i = 1; i <= N - 10; ++i) fac[i] = 1ll * fac[i - 1] * i % mod;
  iac[N - 10] = ginv(fac[N - 10]);
  for (int i = N - 10; i; --i) iac[i - 1] = 1ll * iac[i] * i % mod;
  inv[0] = 1;
  for (int i = 1; i <= N - 10; ++i) inv[i] = 1ll * iac[i] * fac[i - 1] % mod;
  n = rd(), m = rd(), k = rd();
  int ans = 0, dt = 0;
  while (k <= m) {
    dt = (dt + wk(m - k, n - 1)) % mod;
    for (int i = 0; i < n; ++i) {
      int sm = 0, lm = n - 1 - i;
      for (int j = 0; j <= lm; ++j) {
        int dx = 1ll * C(lm, j) * wk(m - k * (i + j + 1), lm) % mod;
        sm = (sm + ((j & 1) ? mod - dx : dx)) % mod;
      }
      sm = 1ll * sm * C(n - 1, i) % mod;
      ans = (ans + 1ll * sm * inv[i + 1] % mod) % mod;
    }
    ++k;
  }
  ans = 1ll * ans * ginv(dt) % mod;
  printf("%d\n", ans);
  return 0;
}
