#include <bits/stdc++.h>
#define int long long
using namespace std;
int up_bound(int l,int r,int x,vector<int> vec){
while(l < r){
int mid = (l + r + 1) >> 1;
if(vec[mid]<=x){
l = mid;
}else{
r = mid - 1;
}
}
if(vec[l]==x) return l + 1;
else return -1;
}
int down_bound(int l,int r,int x,vector<int> vec){
while(l < r){
int mid = (l + r) >> 1;
if(vec[mid]>=x){
r = mid;
}else{
l = mid + 1;
}
}
if(vec[l]==x) return l + 1;
else return -1;
}
signed main(){
int N,C;
cin >> N >> C;
vector<int> vec;
for(int i=0;i<N;i++){
int x;
cin >> x;
vec.push_back(x);
}
sort(vec.begin(),vec.end());
int ans = 0;
for(int i=0;i<N;i++){
int tmp = vec[i] + C;
if(down_bound(0,N,tmp,vec)!=-1){
ans += up_bound(-1,N-1,tmp,vec) - down_bound(0,N,tmp,vec) + 1;
}
}
cout << ans << endl;
return 0;
}