#include <iostream>
#include <map>

using namespace std;

int main() {
	int n, k;
	cin >> n >> k;
	map<int, int> counting;
	int tmp;
	for (int i = 0; i < n; i++) {
		cin >> tmp;
		counting[tmp]++; 
	}
	int* a = new int[n];
	//前缀和 
	int* sum = new int[n];
	sum[0] = 0;
	int cnt = 1;
	for (map<int, int>::iterator it = counting.begin(); it != counting.end(); it++) {
		a[cnt] = it -> first;
		sum[cnt] = it -> second + sum[cnt - 1];
		cnt++; 
	}
	sum[cnt] = sum[cnt - 1];
	int left = 1, right = 1, final_ans = 0, ans = 0;
	//推荐使用left < cnt判定,逻辑较为清楚不容易出错 
	while (right < cnt) {
		while ((right < cnt - 1 && a[right + 1] - a[left] <= k) || right == cnt - 1) {
			right++;
		}
		ans = max(ans, sum[right] - sum[left - 1]);
		left++;
	}
	cout << ans << endl;
}