#include using namespace std; #include using namespace atcoder; using mint = modint998244353; int main () { int N, M, K; cin >> N >> M >> K; std::vector A(N); for (auto& a : A) cin >> a; sort(A.begin(), A.end()); vector dp1(N, mint(0)), dp2(N, mint(1)); for (int i = 0; i < M; i ++) { mint sum = 0; int l = 0, r = 0; for (int j = 0; j < N; j ++) { while (r < N && A[r] <= A[j] + K) { sum += dp2[r]; r ++; } while (l < N && A[l] < A[j] - K) { sum -= dp2[l]; l ++; } dp1[j] = sum; } swap(dp1, dp2); } cout << accumulate(dp2.begin(), dp2.end(), mint(0)).val() << endl; }