#include<bits/stdc++.h>
using namespace std;
int cnt[100005];
int f[100005][2];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
int tmp;
scanf("%d",&tmp);
cnt[tmp]++;
}
for(int i=1;i<=100003;i++)
{
if(cnt[i]==0)
{
f[i][1]=max(f[i-1][0],f[i-1][1]);
f[i][0]=f[i][1];
}
else
{
f[i][0]=max(f[i-1][0],f[i-1][1]);
if(k!=0 && k!=1)
{
int tmp=max(0,i-k);
int tmp2=max(0,i-2*k);
f[i][1]=max(f[i][0]-cnt[tmp]+cnt[i],f[tmp2][1]+cnt[i]);
}
else if(k==0 )
f[i][1]=f[i][0]+1;
else
{
f[i][1]=max(f[i-2][0],f[i-2][1])+cnt[i];
}
}
}
printf("%d",max(f[100000][1],f[100000][0]));
}