#include #include #include using namespace std; int main() { const int mod = 998244353; 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 dp(n + 1, 1); dp[n] = 0; vector l(n), r(n); for (int i = 0; i < n; ++i) { l[i] = lower_bound(a.begin(), a.end(), a[i] - k) - a.begin(); r[i] = upper_bound(a.begin(), a.end(), a[i] + k) - a.begin(); } for (int i = 1; i < m; ++i) { vector ndp(n + 1); for (int j = 0; j < n; ++j) { ndp[l[j]] += dp[j]; ndp[r[j]] -= dp[j]; } for (int j = 0; j < n; ++j) ndp[j + 1] += ndp[j]; swap(ndp, dp); for (int j = 0; j <= n; ++j) dp[j] %= mod; } long long ans = 0; for (int i = 0; i < n; ++i) ans = (ans + dp[i]) % mod; cout << ans << endl; }