#include <bits/stdc++.h>
#define lb lower_bound
#define pii pair<int,int>
#define fi first
#define int long long
#define se second
#define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define op freopen
#define sz size
#define TXT "test"
#define freo if(fopen(TXT".inp","r")){op(TXT".inp","r",stdin);op(TXT".out","w",stdout);}
using namespace std;
const int INF=1e18;
int n,a[50],k,dp[1<<18][20];
main()
{
ios;
freo;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
dp[1<<(i-1)][i]=1;
}
for(int mask=1;mask<(1<<n);mask++)
{
for(int last=1;last<=n;last++)
{
if(!(mask&(1<<(last-1))))
continue;
for(int next=1;next<=n;next++)
{
if(mask&(1<<(next-1)))
continue;
if(abs(a[next]-a[last])<=k)
continue;
int nextper=mask|(1<<(next-1));
dp[nextper][next]+=dp[mask][last];
}
}
}
int res=0;
for(int i=1;i<=n;i++)
{
res+=dp[(1<<n)-1][i];
}
cout<<res;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGIgbG93ZXJfYm91bmQKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGlvcyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiNkZWZpbmUgb3AgZnJlb3BlbgojZGVmaW5lIHN6IHNpemUKI2RlZmluZSBUWFQgInRlc3QiCiNkZWZpbmUgZnJlbyBpZihmb3BlbihUWFQiLmlucCIsInIiKSl7b3AoVFhUIi5pbnAiLCJyIixzdGRpbik7b3AoVFhUIi5vdXQiLCJ3IixzdGRvdXQpO30KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBJTkY9MWUxODsKaW50IG4sYVs1MF0sayxkcFsxPDwxOF1bMjBdOwptYWluKCkKewogICAgaW9zOwogICAgZnJlbzsKICAgIGNpbj4+bj4+azsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIGNpbj4+YVtpXTsKICAgIH0KICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIGRwWzE8PChpLTEpXVtpXT0xOwogICAgfQogICAgZm9yKGludCBtYXNrPTE7bWFzazwoMTw8bik7bWFzaysrKQogICAgewogICAgICAgIGZvcihpbnQgbGFzdD0xO2xhc3Q8PW47bGFzdCsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoIShtYXNrJigxPDwobGFzdC0xKSkpKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGZvcihpbnQgbmV4dD0xO25leHQ8PW47bmV4dCsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihtYXNrJigxPDwobmV4dC0xKSkpCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICBpZihhYnMoYVtuZXh0XS1hW2xhc3RdKTw9aykKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIGludCBuZXh0cGVyPW1hc2t8KDE8PChuZXh0LTEpKTsKICAgICAgICAgICAgICAgIGRwW25leHRwZXJdW25leHRdKz1kcFttYXNrXVtsYXN0XTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGludCByZXM9MDsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKQogICAgewogICAgICAgIHJlcys9ZHBbKDE8PG4pLTFdW2ldOwogICAgfQogICAgY291dDw8cmVzOwp9