#include <bits/stdc++.h>
using namespace std;
const int maxn=6e5+10;
int n,m,s[maxn],e[maxn],d[maxn],p[maxn],cnt=0,sum=0;
long long pre[maxn],t=0,ans=0;
map<int,int> mp,re;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&s[i]);
e[i]=s[i]+m-1;
mp[s[i]]++,mp[e[i]]++,mp[e[i]+1]++;
}
for(auto i=mp.begin();i!=mp.end();i++)
{
i->second=(++cnt);
re[cnt]=i->first;
}
re[cnt+1]=re[cnt]+1;
for(int i=1;i<=n;i++)
{
s[i]=mp[s[i]],e[i]=mp[e[i]];
sum=max(sum,e[i]);
d[s[i]]++,d[e[i]+1]--;
}
for(int i=1;i<=sum;i++)
{
p[i]=p[i-1]+d[i];
if(p[i]==1)
{
ans+=re[i+1]-re[i];
}
}
for(int i=1;i<=sum;i++)
{
if(p[i]==2) p[i]=-1;
if(p[i]>=3) p[i]=0;
pre[i]=pre[i-1]+p[i]*(re[i+1]-re[i]);
}
for(int i=1;i<=n;i++)
{
t=max(t,re[e[i]]-re[s[i]]+1-pre[e[i]]+pre[s[i]-1]);
}
printf("%lld",ans+t);
return 0;
}