mod = 998244353 comb_num = 10**7 + 2 F = [1] * comb_num F_ = [1] * comb_num for i in range(2, comb_num): F[i] = F[i-1]*i%mod F_[-1] = pow(F[-1], -1, mod) for i in range(comb_num-1, 0, -1): F_[i-1] = F_[i]*i%mod def comb(a, b): if 0 <= b <= a: return F[a] * F_[b] * F_[a-b] % mod else: return 0 n, m, k, l = list(map(int, input().split())) ans = 0 def main(box, ball, v): rep = 0 cnt = 0 while cnt * v <= ball and cnt <= box: n_ball = ball - cnt * v rep = (rep + (1 if not cnt % 2 else -1) * comb(n_ball+box-1, box-1) * comb(box, cnt)) % mod #print(n_ball, cnt, comb(n_ball+box-1, box-1), comb(box, cnt)) cnt += 1 return rep for v1 in range(l, m): ans = (ans + main(n-1, m*k-v1, m+1) - main(n-1, m*k-v1, v1+1)) % mod #print(main(n-1, m*k-v1, m+1), main(n-1, m*k-v1, v1+1)) print(ans)