#include<cstdio>
#include<algorithm>
using namespace std;
struct node
{
int val;
int maxright;
};
int n,k;
node arr[50005];
bool cmp(node x,node y)
{
return x.val<y.val;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",&arr[i].val);
sort(arr+1,arr+n+1,cmp);
/*for(int i=1;i<=n;i++)
printf("%d\n",arr[i].val);
printf("\n\n");*/
int rightindex=n;
for(int i=n;i>=1;i--)
{
if(arr[rightindex].val-arr[i].val<=k)
{
arr[i].maxright = max(arr[i+1].maxright,rightindex - i+1);
}
else
{
rightindex--;
i++;
continue;
}
}
int leftindex = 1;
int maxnum = 0;
for(int i=1;i<=n;i++)
{
if(arr[i].val - arr[leftindex].val<=k)
{
// printf("%d %d %d\n", i, leftindex, arr[i].maxright);
maxnum = max(maxnum,i - leftindex + 1 + arr[i].maxright);
}
else
{
leftindex++;
i--;
continue;
}
}
printf("%d",maxnum);
return 0;
}