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);

    }
}