import sys def solve(): N, M, K, L = map(int, input().split()) MOD = 998244353 MAX = N + M * K + 10 fact = [1] * MAX inv = [1] * MAX for i in range(1, MAX): fact[i] = (fact[i - 1] * i) % MOD inv[MAX - 1] = pow(fact[MAX - 1], MOD - 2, MOD) for i in range(MAX - 2, -1, -1): inv[i] = (inv[i + 1] * (i + 1)) % MOD def combination(n, r): if r < 0 or r > n: return 0 num = fact[n] den = (inv[r] * inv[n - r]) % MOD return (num * den) % MOD ans = 0 total_votes = M * K for x in range(L, M + 1): min1 = 1 for i in range(N): val = (combination(N - 1, i) * ((combination(N - 2 + total_votes - x - (M + 1) * i, N - 2) - combination(N - 2 + total_votes - x - (x + 1) * i, N - 2)) % MOD)) % MOD if min1 == 1: ans = (ans + val) % MOD else: ans = (ans - val) % MOD min1 *= -1 print(ans % MOD) if __name__ == "__main__": solve()