using namespace std;
int p[ 100000002],s[100000002],k;
priority_queue<int, vector<int>, less<int> >gd;
int main(){
// freopen("P3143_4.IN","r",stdin);
int n,c=0;
cin>>n;
cin>>k;
for(int i=0;i<n;i++){ //输入
int b=0;
cin>>b;
if(b>c){ //c为最大值
c=b;
}
p[b]+=1;
}
int d,z=0;
int b=0;
s[0]=p[0];
for(int i=1;i<=k;i++){ //第一架子
if(k==1){
continue;
}
s[i]=s[i-1]+p[i];
if(s[i]>=b){
b=s[i];
z=i;
}
}
for(int i=k+1;i<=c;i++){
s[i]=s[i-1]+p[i]-p[i-k-1];
if(s[i]>=b){
b=s[i];
z=i;
}
}
for(int i=z-5;i<=z;i++){ //清空
if(i<0){continue;}
p[i]=0;
}
z=b;b=0;
for(int i=1;i<=k;i++){//第二架子
if(k==1){
continue;
}
s[i]=s[i-1]+p[i];
if(s[i]>=b){
b=s[i];
}
}
for(int i=k+1;i<=c;i++){
s[i]=s[i-1]+p[i]-p[i-k-1];
if(s[i]>=b){
b=s[i];
}
}
cout<<z+b;
//fclose(stdout);
return 0;
}