N,M,K=map(int, input().split()) A=list(map(int, input().split())) A=sorted(A) mod=998244353 import bisect B=[] for a in A: l=bisect.bisect_left(A,a-K) r=bisect.bisect_left(A,a+K+1) B.append((l,r)) dp=[1]*N for i in range(M-1): C=[0] for d in dp: C.append((C[-1]+d)%mod) ndp=[] for l,r in B: ndp.append((C[r]-C[l])%mod) dp=ndp print(sum(dp)%mod)