#include<bits/stdc++.h>
using namespace std;
typedef long long ll ;
const int N = 18;
int n, k;
int a[N];
ll dp[1 << N][N];
int main(void) {
freopen("mengbi.in", "r", stdin);
freopen("mengbi.out", "w", stdout);
cin >> n >> k;
for (int i = 0; i < n; i++)cin >> a[i];
for (int i = 0; i < n; i++)dp[1 << i][i] = 1;
for (int mask = 0; mask < (1 << n); mask++) {
for (int i = 0; i < n; i++) {
if (!(mask & (1 << i)))continue;
for (int j = 0; j < n; j++) {
if (mask & (1 << j))continue;
if (abs(a[j] - a[i]) > k) {
int last = mask | (1 << j);
dp[last][j] += dp[mask][i];
}
}
}
}
ll ans = 0;
for (int i = 0; i < n; i++) {
ans += dp[(1 << n) -1][i];
}
cout << ans;
return 0;
}