第一个第五个第六个都有一个点过不去
#include <iostream>
using namespace std;
long long a[1000005],n,k,ans,b[1000005];
int main(){
cin>>n>>k;
long long x,y;
bool flag=false;
for(int i=0;i<n;i++){
cin>>x>>y;
b[i]=x,a[x]+=y;
}
if(k==0){
for(int i=0;i<n;i++){
x=b[i];
if(a[x]>=2){
flag=true;
ans=max(ans,a[x]*x);
}
}
}
else{
for(int i=0;i<n;i++){
x=b[i];
if(a[x+k]){
flag=true;
y=min(a[x],a[x+k]);
ans=max(ans,y*(x+x+k));
}
}
}
if(flag) cout<<ans;
else cout<<"NO";
return 0;
}