#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
sort(v.begin(), v.end());
const int mod = (int)1e9+9;
int ans = 1;
int l = 0;
for (int r = 0; r < n; r++) {
while (v[l] < v[r] - m) { l++; }
ans = (long long)ans * (r-l+1) % mod;
}
cout << ans << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmludCBtYWluKCkKewoJaW50IG4sIG07CgljaW4gPj4gbiA+PiBtOwoJdmVjdG9yPGludD4gdihuKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJY2luID4+IHZbaV07Cgl9Cglzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSk7Cgljb25zdCBpbnQgbW9kID0gKGludCkxZTkrOTsKCWludCBhbnMgPSAxOwoJaW50IGwgPSAwOwoJZm9yIChpbnQgciA9IDA7IHIgPCBuOyByKyspIHsKCQl3aGlsZSAodltsXSA8IHZbcl0gLSBtKSB7IGwrKzsgfQoJCWFucyA9IChsb25nIGxvbmcpYW5zICogKHItbCsxKSAlIG1vZDsKCX0KCWNvdXQgPDwgYW5zIDw8IGVuZGw7Cn0=