/** * author: zjs * created: 01.09.2026 20:03:03 **/ #include #include // does not include cassert since GCC 16. using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) 42 #endif int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m, k; cin >> n >> m >> k; vector a(n); for (int i = 0; i < n; i++) cin >> a[i]; sort(a.begin(), a.end()); vector l(n), r(n); for (int i = 0, j = 0; i < n; i++) { while (a[j] + k < a[i]) j++; l[i] = j; } for (int i = 0, j = 0; i < n; i++) { while (j < n && !(a[i] + k < a[j])) j++; r[i] = j; } const int mod = 998244353; vector sum(n + 1); for (int i = 0; i < n; i++) sum[i + 1] = sum[i] + 1; for (int i = 0; i < m - 1; i++) { vector nsum(n + 1); for (int j = 0; j < n; j++) { nsum[j + 1] = ((long long) nsum[j] + sum[r[j]] - sum[l[j]]) % mod; } sum = nsum; } if (sum[n] < 0) sum[n] += mod; cout << sum[n] << '\n'; }