#include #include using namespace std; using ll = long long; using mint = atcoder::modint998244353; int main() { ios::sync_with_stdio(false); cin.tie(0); short n, m; int k; cin >> n >> m >> k; vector a(n); for(auto &&v : a) cin >> v; sort(a.begin(), a.end()); vector> b(n); for(short i = 0, l = 0, r = 0; i < n; i++){ while(l < n && a[l] < a[i] - k) l++; while(r < n && a[r] <= a[i] + k) r++; b[i] = make_pair(l, r); } vector dp(n + 1), ndp(n + 1); iota(dp.begin(), dp.end(), mint::raw(0)); for(short i = 1; i < m; i++){ for(short j = 0; j < n; j++){ ndp[j + 1] = ndp[j] + dp[b[j].second] - dp[b[j].first]; } swap(dp, ndp); } cout << dp[n].val() << '\n'; }