#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;
}