#include<bits/stdc++.h>
#define int long long
const int N = 20;
using namespace std;
int n,k;
int a[N];
bool vs [N];
int ans = 0;
void dfs (int x,int cnt) {
if (cnt >= n) {
ans++;
return;
}
for (int i = 1; i <= n; ++i) {
if (vs[i]) continue;
if (abs(a[i] - a[x]) <= k) continue;
if (!vs[i] && abs(a[i] - a[x]) > k) {
vs[i] = true;
dfs(i,cnt + 1);
vs[i] = false;
}
}
return;
}
signed main() {
freopen("mengbi.in","r",stdin);
freopen("mengbi.out","w",stdout);
cin >> n >> k;
for (int i = 1; i <= n; ++i) cin >> a[i];
memset(vs,false,sizeof(vs));
for (int i = 1; i <= n; ++i) {
memset(vs,false,sizeof(vs));
vs[i] = true;
dfs(i,1);
}
cout << ans;
return 0;
}