#include<bits/stdc++.h>
#define int long long
#define ALL(x) x.begin(),x.end()
using namespace std;
int n,m,nowv,lastk,lastv,lasts,sum,ans=-0x3f3f3f3f3f3f3f3fll;
map<int,int>mp,rmp,s;
vector<int>vec;
signed main(){
cin>>n>>m;
for(int i=1,t;i<=n;i++){
cin>>t;
vec.push_back(t);
mp[t]++,mp[t+m]--;
}
sort(ALL(vec));
for(auto[k,v]:mp){
if(sum==2)
rmp[lastk]++,rmp[k]--;
if(sum==1)
rmp[lastk]--,rmp[k]++;
sum+=v,lastk=k;
}
lastk=0;
for(auto&[k,v]:rmp)
v+=rmp[lastk],lastk=k;
lastk=lastv=0;
for(auto[k,v]:rmp)
s[k]=v+s[lastk]+(k-lastk-1)*lastv,lastv=v,lastk=k;
for(auto t:vec){
ans=max(ans,s[t+m]-rmp[t+m]-s[t]+rmp[t]);
}
ans+=m,lastk=sum=0;
ans=max(ans,0ll);
for(auto[k,v]:mp){
if(sum==1)
ans+=k-lastk;
sum+=v,lastk=k;
}
cout<<ans;
return 0;
}