#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
  int N, T;
  cin >> N >> T;
  vector<int> D(N);
  for(int i = 0; i < N; ++i){
    cin >> D[i];
  }
  sort(D.begin(),D.end());
  long long int ans = 1, MOD = 1000000007;
  for(int i = N-1; i >= 0; --i){
    int d = D[i];
    int c = upper_bound(D.begin(),D.end(),d+T)-D.begin();
    ans *= (c-i);
    ans %= MOD;
  }
  cout << ans << endl;
  return 0;
}

