#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;
}