#include<bits/stdc++.h>
using namespace std;

using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;

void solve()
{
	ll n,k,sum=0;//排序数组 最大的两个值相乘能做出的贡献肯定最多 所以对于从末尾开始的两个元素 如果满足条件就加上 不满足就跳过一个元素
	cin >> n >> k;//10^5*10^5会溢出 记得long long
	vector<ll>v(n,0);
	for(int i=0;i<n;i++) cin >> v[i];
	sort(v.begin(),v.end());
	for(int i=n-1;i>0;)
	{
		if(v[i]-v[i-1]<=k)
		{
			sum+=v[i]*v[i-1];
			i-=2;
		}
		else
		{
			i--;
		}
	}
	cout << sum;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t=1;
	//cin >> t;
	
	while(t--)
	{
		solve();
	}
	return 0;
}