//对数组a[n]排序,每次取最大的两个数差值是否<=k;
//如果true则计算乘积并加到result,并且下标移动2位;否则下标移动1位
//注意result使用long long, 则a[n]也使用long long
#include <stdio.h>
// 快速排序函数
void quick_sort(long long q[], int l, int r) {//注意使用long long!!!
    // 递归终止条件
    if (l >= r) return;  
    // 选择中间元素作为基准
    int x = q[(l + r) / 2];
    int i = l - 1, j = r + 1;
    // 分区操作
    while (i < j) {
        do i++; while (q[i] < x);
        do j--; while (q[j] > x);
        if (i < j) {
            // 交换元素
            int temp = q[i];
            q[i] = q[j];
            q[j] = temp;
        }
    }
    // 递归排序左右两部分
    quick_sort(q, l, j);
    quick_sort(q, j + 1, r);
}
//取绝对值
int absolute(int x) {
    return (x < 0) ? -x : x;
}
int main() {
    int n, k;
    long long result = 0;
    scanf("%d", &n);
    scanf("%d", &k);
    long long a[n];//注意使用long long!!!
    for(int i=0; i<n; i++){
        scanf("%lld", &a[i]);
    }
    quick_sort(a, 0, n-1);//对数组a[n]排序
    for(int j=n-1; j>0; j--){
        if(absolute(a[j] - a[j-1]) <= k){
            result += a[j] * a[j-1];
            j--;
        }
    }
    printf("%lld\n", result);
    return 0;
}