#include #include using namespace std; #define ll long long #define int long long #define INF 1e18 #define MOD 998244353 int N,M,K; int A[505050]; signed main(){ cin >> N >> M >> K; for(int i = 0;i < N;i++)cin >> A[i]; sort(A, A+N); vector now; for(int i = 0;i < N;i++)now.emplace_back(1); for(int i = 0;i < M-1;i++){ vector next; for(auto i:now)next.emplace_back(1); int l = 0; int r = 0; int S = 0; for (int j = 0;j < N;j++){ while(r < N and A[j]-K <= A[r] and A[r] <= A[j]+K){ S += now[r]; S %= MOD; r += 1; } while (l < N and A[l] < A[j]-K){ S += MOD; S -= now[l]; S %= MOD; l += 1; } next[j] = S; } now.swap(next); } int ans = 0; for(int i = 0;i < N;i++){ ans += now[i]; ans %= MOD; } cout << ans << endl; return 0; }