#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main() {
// your code goes here
int n; cin>>n; int k ; cin>>k;
vector<int>arr(n);
for(int i = 0 ;i<n;i++)cin>>arr[i];
vector<int>prefix(n);
unordered_map<int,int>hash;
int max_sum = INT_MIN;
int prefix_sum = 0 ;
for(int i = 1;i<n;i++){
prefix_sum+=arr[i-1];
if(hash.find(arr[i]-k)!=hash.end()){
int sum = prefix_sum+arr[i]-hash[arr[i]-k];
max_sum = max({max_sum,sum,0});
}
if(hash.find(arr[i]+k)!=hash.end()){
int sum = prefix_sum+arr[i]-hash[arr[i]+k];
max_sum = max({max_sum,sum,0});
}
if(hash.find(arr[i])!=hash.end()){
hash[arr[i]]= min(prefix_sum,hash[arr[i]]);
}
else{
hash[arr[i]] = prefix_sum;
}
}
cout<<max_sum;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglpbnQgbjsgY2luPj5uOyBpbnQgayA7IGNpbj4+azsKCXZlY3RvcjxpbnQ+YXJyKG4pOwoJZm9yKGludCBpID0gMCA7aTxuO2krKyljaW4+PmFycltpXTsKCXZlY3RvcjxpbnQ+cHJlZml4KG4pOwoJdW5vcmRlcmVkX21hcDxpbnQsaW50Pmhhc2g7CglpbnQgbWF4X3N1bSA9IElOVF9NSU47CglpbnQgcHJlZml4X3N1bSA9IDAgOyAKCWZvcihpbnQgaSA9IDE7aTxuO2krKyl7CgkJcHJlZml4X3N1bSs9YXJyW2ktMV07CgkJaWYoaGFzaC5maW5kKGFycltpXS1rKSE9aGFzaC5lbmQoKSl7CgkJCWludCBzdW0gPSBwcmVmaXhfc3VtK2FycltpXS1oYXNoW2FycltpXS1rXTsKCQkJbWF4X3N1bSA9IG1heCh7bWF4X3N1bSxzdW0sMH0pOwoJCX0KCQlpZihoYXNoLmZpbmQoYXJyW2ldK2spIT1oYXNoLmVuZCgpKXsKCQkJaW50IHN1bSA9IHByZWZpeF9zdW0rYXJyW2ldLWhhc2hbYXJyW2ldK2tdOwoJCQltYXhfc3VtID0gbWF4KHttYXhfc3VtLHN1bSwwfSk7CgkJfQoJCWlmKGhhc2guZmluZChhcnJbaV0pIT1oYXNoLmVuZCgpKXsKCQkJaGFzaFthcnJbaV1dPSBtaW4ocHJlZml4X3N1bSxoYXNoW2FycltpXV0pOwoJCX0KCQllbHNlewoJCQloYXNoW2FycltpXV0gPSBwcmVmaXhfc3VtOwoJCX0KCX0KCQoJCWNvdXQ8PG1heF9zdW07CgoJCglyZXR1cm4gMDsKfQ==