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)) dp0=[1]*N dp1=[0]*N C=[0]*(N+1) for i in range(M-1): for j in range(N): if i%2==0: C[j+1]=C[j]+dp0[j] else: C[j+1]=C[j]+dp1[j] if i%2==0: for j in range(N): l,r=B[j] dp1[j]=(C[r]-C[l])%mod else: for j in range(N): l,r=B[j] dp0[j]=(C[r]-C[l])%mod if M%2==0: print(sum(dp1)%mod) else: print(sum(dp0)%mod)