n, m, k = map(int, input().split()) A = list(map(int, input().split())) A.sort() mod = 998244353 m -= 1 dp = [1] * n LR = [] from bisect import bisect_left as bs for a in A: LR.append((bs(A, a-k), bs(A, a+k+1))) for i in range(m): mdp = [0] * (n+1) for j in range(n): mdp[j+1] = (mdp[j]+dp[j]) % mod dp = [(mdp[LR[j][1]] - mdp[LR[j][0]]) % mod for j in range(n)] print(sum(dp)%mod)