using System;
using System.Collections.Generic;
using System.Linq;
public class Program {
public static void Main() {
string[] inputs = Console.ReadLine().Split(' ');
int.TryParse(inputs[0], out int n);
int.TryParse(inputs[1], out int k);
//将输入的数字排序
List<int> nums = Console.ReadLine().Split(' ').Select(int.Parse).OrderByDescending(x => x).ToList();
ulong score = 0;
//每次只需要从大到小地对比排序后的相邻的两个数字,看看是不是小于k,如果是小于k则说明可以配对且是最优配对,如果不能配对说明列表中不存在可配对数字
for (int i = 0; i < n-1; i++)
{
int currNum = nums[i];
int nextNum = nums[i+1];
if(Math.Abs(currNum - nextNum) <= k)
{
score += (ulong)currNum * (ulong)nextNum;
i++;//跳过下一个数字
}
}
Console.WriteLine(score);
}
}