import sys
from bisect import bisect_left, bisect_right
def solve():
input_data = sys.stdin.read().split()
if not input_data:
return
n = int(input_data[0])
t = int(input_data[1])
arr = [int(x) for x in input_data[2:]]
# Сортируем массив цен для быстрого поиска
arr.sort()
total_ways = 0
# Перебираем каждый товар в качестве первого
for i in range(n):
val = arr[i]
# 1. Ищем количество возможных вторых товаров: |B - val| <= t <=> val - t <= B <= val + t
# Исключаем сам элемент i, поэтому считаем диапазон и вычитаем 1, если элемент попадает внутрь
left_bound = val - t
right_bound = val + t
# Количество элементов в диапазоне [left_bound, right_bound]
idx1 = bisect_left(arr, left_bound)
idx2 = bisect_right(arr, right_bound)
count_b = idx2 - idx1
# Так как сам элемент arr[i] тоже попадает в этот диапазон (ведь 0 <= t),
# исключаем его из возможных выборов на 2-ю позицию (товары должны быть разными)
count_b -= 1
# 2. Ищем количество возможных третьих товаров: |C - val| > t <=> C < val - t или C > val + t
# Общее количество элементов минус те, которые лежат в диапазоне [val - t, val + t]
count_c = n - (idx2 - idx1)
# На каждую пара (второй, третий) для данного первого элемента добавляется count_b * count_c способов
total_ways += count_b * count_c
print(total_ways)
if __name__ == '__main__':
solve()