N, M, K = map(int, input().split()) A = list(map(int, input().split())) A.sort() def calc_l(i): ok = i ng = -1 while ok - ng > 1: mid = (ok + ng) // 2 if A[i] - A[mid] <= K: ok = mid else: ng = mid return ok def calc_r(i): ok = i ng = N while ng - ok > 1: mid = (ok + ng) // 2 if A[mid] - A[i] <= K: ok = mid else: ng = mid return ok mod = 998244353 L = [-1] * N R = [-1] * N for i in range(N): L[i] = calc_l(i) R[i] = calc_r(i) dp = [1] * N cum = [0] * (N + 1) for i in range(N): cum[i + 1] = cum[i] + 1 for _ in range(M - 1): ndp = [0] * N for i in range(N): ndp[i] = cum[R[i] + 1] - cum[L[i]] % mod dp = ndp[:] for i in range(N): cum[i + 1] = (cum[i] + dp[i]) % mod print(cum[-1])