import bisect m,n,k = map(int,input().split()) s = [int(_) for _ in input().split()] s.sort() dp = [] mod = 998244353 for i in range(m): dp.append([0]*(n)) for i in range(m): dp[i][0] = 1 for i in range(1,n): left = 0 right = 0 rui = [0] for j in range(m): rui.append((rui[-1]+dp[j][i-1])%mod) for j in range(m): while True: if s[left] >= s[j]-k: break else: left += 1 while True: if right == m: break if s[right] <= s[j]+k: right += 1 else: break dp[j][i] = (rui[right]-rui[left])%mod ans = 0 for i in dp: ans = (ans+i[-1])%mod print(ans%mod)