// upsolve with rainboy
import java.io.*;
import java.util.*;

public class CF1096E {
	static final int MD = 998244353;
	static int[][] ch;
	static void init(int n, int k) {
		ch = new int[n][k];
		ch[0][0] = 1;
		for (int i = 1; i < n; i++) {
			ch[i][0] = 1;
			for (int j = 1; j < k; j++)
				ch[i][j] = (ch[i - 1][j - 1] + ch[i - 1][j]) % MD;
		}
	}
	static long power(long a, int k) {
		if (k == 0)
			return 1;
		long p = power(a, k / 2);
		p = p * p % MD;
		if (k % 2 == 1)
			p = p * a % MD;
		return p;
	}
	static long inv(long a) {
		return power(a, MD - 2);
	}
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int s = Integer.parseInt(st.nextToken());
		int r = Integer.parseInt(st.nextToken());
		init(s + n, n);
		// dp[a][b]: b balls into a urns of size r - 1
		int[][] dp = new int[1 + n][1 + s];
		// dq[a][b]: dp[a][b] + dp[a][b - 1] + ... + dp[a][b - (r - 1)]
		int[][] dq = new int[1 + n][1 + s];
		for (int a = 0; a <= n; a++) {
			if (a == 0)
				dp[0][0] = 1;
			else
				for (int b = 0; b <= s; b++)
					dp[a][b] = dq[a - 1][b];
			int sum = 0;
			for (int b = 0; b <= s; b++) {
				sum = (sum + dp[a][b]) % MD;
				if (b >= r)
					sum = (sum - dp[a][b - r] + MD) % MD;
				dq[a][b] = sum;
			}
		}
		int p = 0;
		for (int k = 1; k <= n && k * r <= s; k++)
			for (int b = 0; b + k * r <= s; b++)
				p = (int) ((p + (long) dp[n - k][b] * ch[s - b - k * r + k - 1][k - 1] % MD * ch[n - 1][k - 1] % MD * inv(k)) % MD);
		int q = ch[s - r + n - 1][n - 1];
		System.out.println(p * inv(q) % MD);
	}
}
