#include<bits/stdc++.h>
using namespace std;
long long n,c,a[2005];
struct node
{
int num,cnt;
}b[200005];
int bn;
long long ans=0;
int find(int x)
{
int l=1,r=bn,m;
while(l<r)
{
m=(l+r)>>1;
if(x<=b[m].num) r=m;
else l=m+1;
}
if(b[l].num==x) return l;
else return -1;
}
int main()
{
cin>>n>>c;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
bn=1;
b[1].num=a[1];
b[1].cnt=1;
for(int i=2;i<=n;i++)
{
if(a[i]==b[bn].num) b[bn].cnt++;
else
{
bn++;
b[bn].num=a[i];
b[bn].cnt=1;
}
}
for(int i=1;i<=bn;i++)
{
int A=c+b[i].num;
int x=find(A);
if(x!=-1) ans+=(long long)b[i].cnt*b[x].cnt;
}
cout<<ans;
return 0;
}