//懒得动那么多脑子了,直接无脑dp写了,状态方程很好写 #include <iostream> #include<bits/stdc++.h> using namespace std; const int N=2e5+5; #define int long long int dp[N][2]; int a[N]; signed main() { int n,k; cin>>n>>k; long long ans=0; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+n+1); for(int i=2;i<=n;i++) { dp[i][0]=max(dp[i-1][0],dp[i-1][1]); if(a[i]-a[i-1]<=k) { dp[i][1]=dp[i-1][0]+a[i]*a[i-1]; } } ans=max(dp[n][0],dp[n][1]); cout<<ans<<endl; }