#include <stdio.h>
#include <stdlib.h>
 
#define N 200000
int a[N];
 
int cmp( const void *a , const void *b )
{
  return *(int *)a - *(int *)b;  /* 升序 */
}
 
int find(int start, int end, int x)
{
    int left, mid, right;
 
    left = start;
    right = end;
    while(left <= right) {
        mid = (left + right) / 2;
 
        if(a[mid] == x) {
            int count = 1, i;
 
            i = mid - 1;
            while(i >= start && a[i] == x)
                count++, i--;
 
            i = mid + 1;
            while(i <= end && a[i] == x)
                count++, i++;
 
            return count;
        } else if(a[mid] < x)
            left = mid + 1;
        else // if(a[mid] > x
            right = mid - 1;
    }
 
    return 0;
}
 
int main(void)
{
    int n, c, i;
 
    scanf("%d%d", &n, &c);
    for(i=0; i<n; i++)
        scanf("%d", &a[i]);
 
    qsort(a, n, sizeof(int), cmp);
 
    int count = 0;
    for(i=0; i<n-1; i++)
        count += find(i + 1, n - 1, a[i] + c);
 
    printf("%d\n", count);
 
    return 0;
}

/**************************************************************
	Problem: 1767
	User: admin
	Language: C
	Result: Accepted
	Time:6 ms
	Memory:1924 kb
****************************************************************/