//对数组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;
}