MOD = 998244353 N, M, K = map(int, input().split()) A = sorted(map(int, input().split())) R = [] right = 0 for i in range(N): while right+1 < N and A[right+1]-A[i] <= K: right += 1 R.append(right) if right == i: right += 1 L = [] left = N-1 for i in reversed(range(N)): while 1 <= left and A[i]-A[left-1] <= K: left -= 1 L.append(left) if left == i: left -= 1 L = L[::-1] dp = [0]*(N+1) for i in range(N): dp[i+1] = i+1 for _ in range(M-1): ndp = [0] for i in range(N): ndp.append((ndp[-1]+(dp[R[i]+1]-dp[L[i]]))%MOD) dp = ndp print(dp[-1])