#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=-4e18;
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(!lastk)
goto g;
if(sum==2)
rmp[lastk]++,rmp[k]--;
if(sum==1)
rmp[lastk]--,rmp[k]++;
g:sum+=v,lastk=k;
}
lastk=0;
for(auto&[k,v]:rmp){
if(rmp.count(lastk))
v+=rmp[lastk];
lastk=k;
}
lastk=lastv=0;
for(auto[k,v]:rmp){
s[k]=v+(k-lastk-1)*lastv;
if(s.count(lastk))
s[k]+=s[lastk];
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;
}
45pts WA,似乎是统计多了
但是找不到哪里错了