#include <bits/stdc++.h>
#define int long long
using namespace std;
int N, K;
int S[20];
bool diff[20][20];
int dp[1 << 20][20];
#undef int
int main()
#define int long long
{
freopen("mengbi.in","r",stdin);
freopen("mengbi.out","w",stdout);
cin >> N >> K;
for (int i = 0; i < N; ++i) {
cin >> S[i];
}
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
if (i != j && abs(S[i] - S[j]) > K) {
diff[i][j] = true;
}
}
}
for (int i = 0; i < N; ++i) {
dp[1 << i][i] = 1;
}
for (int k = 0; k < (1 << N); ++k) {
for (int i = 0; i < N; ++i) {
if (!(k & (1 << i))) continue;
for (int j = 0; j < N; ++j) {
if (k & (1 << j)) continue;
if (diff[i][j]) {
int temp = k | (1 << j);
dp[temp][j] += dp[k][i];
}
}
}
}
long long ans = 0;
int res = (1 << N) - 1;
for (int i = 0; i < N; ++i) {
ans += dp[res][i];
}
cout << ans << endl;
return 0;
}