#include <bits/stdc++.h>
#define ll long long
const ll MOD = 998244353;
ll n, k;
ll a[1000005];
ll d[2100000];
ll lz[1100000];
ll size, LOG;
void apply(ll k, ll f) {
d[k] = d[k] * f % MOD;
if (k < size) lz[k] = lz[k] * f % MOD;
}
void push(ll k) {
if (lz[k] != 1) {
apply(k << 1, lz[k]);
apply(k << 1 | 1, lz[k]);
lz[k] = 1;
}
}
void update(ll k) {
d[k] = (d[k << 1] + d[k << 1 | 1]) % MOD;
}
void set_val(ll p, ll x) {
p += size;
for (ll i = LOG; i >= 1; i--) push(p >> i);
d[p] = x % MOD;
for (ll i = 1; i <= LOG; i++) update(p >> i);
}
ll prod(ll l, ll r) {
l += size; r += size + 1;
for (ll i = LOG; i >= 1; i--) {
if (((l >> i) << i) != l) push(l >> i);
if (((r >> i) << i) != r) push((r - 1) >> i);
}
ll resL = 0, resR = 0;
while (l < r) {
if (l & 1) {
resL = (resL + d[l]) % MOD;
l++;
}
if (r & 1) {
r--;
resR = (resR + d[r]) % MOD;
}
l >>= 1; r >>= 1;
}
return (resL + resR) % MOD;
}
void apply_range(ll l, ll r, ll f) {
if (l > r) return;
l += size; r += size + 1;
for (ll i = LOG; i >= 1; i--) {
if (((l >> i) << i) != l) push(l >> i);
if (((r >> i) << i) != r) push((r - 1) >> i);
}
ll l2 = l, r2 = r;
while (l < r) {
if (l & 1) {
apply(l, f);
l++;
}
if (r & 1) {
r--;
apply(r, f);
}
l >>= 1; r >>= 1;
}
l = l2; r = r2;
for (ll i = 1; i <= LOG; i++) {
if (((l >> i) << i) != l) update(l >> i);
if (((r >> i) << i) != r) update((r - 1) >> i);
}
}
int main() {
scanf("%lld %lld", &n, &k);
for (ll i = 0; i < n; i++) scanf("%lld", &a[i]);
if (a[n - 1] - a[n - 2] <= k) {
printf("0\n");
return 0;
}
size = 1;
while (size < n) size <<= 1;
LOG = 0;
for (ll s = size; s > 1; s >>= 1) LOG++;
for (ll i = 0; i < size; i++) lz[i] = 1;
for (ll i = 0; i < 2 * size; i++) d[i] = 0;
d[size + n - 1] = 1;
for (ll i = size - 1; i >= 1; i--) d[i] = (d[i << 1] + d[i << 1 | 1]) % MOD;
ll j = n - 1;
for (ll i = n - 2; i >= 0; i--) {
while (j > i && a[j - 1] - a[i] >= k + 1) j--;
ll val = prod(j, n - 1);
set_val(i, val);
apply_range(j, n - 1, (n - 1 - i) % MOD);
if (i + 1 <= j - 1) apply_range(i + 1, j - 1, (n - 1 - i - 1) % MOD);
}
ll ans = prod(0, n - 1);
printf("%lld\n", ans);
return 0;
}