#include <iostream>
#include <algorithm>
#include <vector>
int main(int argc, char *argv[])
{
int count, dist;
std::vector<int> num;
std::cin >> count >> dist;
for (int i = 0; i < count; i++) {
int temp;
std::cin >> temp;
num.push_back(temp);
}
std::sort(num.begin(), num.end(), std::less<int>()); // 升序
int max_num = 0; // 被遍历元素满足条件时所能选择的最大区间
auto fir = num.begin();
auto las = fir;
// 每个元素都被遍历
for (; fir != num.end(); ++fir) {
while (*las - *fir <= dist && las != num.end()) {
las++; // 找出第一个与被遍历元素 差值大于dist的索引
}
max_num = std::max(max_num, static_cast<int>(las-fir));
if (las == num.end()) {
break;
// 证明 被遍历元素其后的所有元素 与 被遍历元素 的差值都满足要求,无需再遍历剩下元素
}
}
std::cout << max_num << std::endl;
return 0;
}