import java.util.*;
class Main {
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in);
int n = sc.nextInt(); // number of elements
int k = sc.nextInt(); // allowed variation
int[] a = new int[n + 1]; // 1-based indexing
int maxVal = 0; // to determine the size of nums[]
for (int i = 1; i <= n; i++) {
a[i] = sc.nextInt();
maxVal
= Math.
max(maxVal, a
[i
] + k
); // max index we need }
// Using array nums as difference array
int[] nums = new int[maxVal + 2]; // extra space for r+1
// Build difference array
for (int i = 1; i <= n; i++) {
int l = a[i] - k;
int r = a[i] + k;
if (l < 0) l = 0; // to avoid negative index
nums[l] += 1;
nums[r + 1] -= 1;
}
// Prefix sum to get max overlap
int answer = 0;
for (int i = 0; i <= maxVal + 1; i++) {
if (i > 0) nums[i] += nums[i - 1];
answer
= Math.
max(answer, nums
[i
]); }
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CgogICAgICAgIGludCBuID0gc2MubmV4dEludCgpOyAgICAgIC8vIG51bWJlciBvZiBlbGVtZW50cwogICAgICAgIGludCBrID0gc2MubmV4dEludCgpOyAgICAgIC8vIGFsbG93ZWQgdmFyaWF0aW9uCiAgICAgICAgaW50W10gYSA9IG5ldyBpbnRbbiArIDFdOyAgLy8gMS1iYXNlZCBpbmRleGluZwogICAgICAgIGludCBtYXhWYWwgPSAwOyAgICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiBudW1zW10KCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgICAgIGFbaV0gPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgIG1heFZhbCA9IE1hdGgubWF4KG1heFZhbCwgYVtpXSArIGspOyAvLyBtYXggaW5kZXggd2UgbmVlZAogICAgICAgIH0KCiAgICAgICAgLy8gVXNpbmcgYXJyYXkgbnVtcyBhcyBkaWZmZXJlbmNlIGFycmF5CiAgICAgICAgaW50W10gbnVtcyA9IG5ldyBpbnRbbWF4VmFsICsgMl07IC8vIGV4dHJhIHNwYWNlIGZvciByKzEKCiAgICAgICAgLy8gQnVpbGQgZGlmZmVyZW5jZSBhcnJheQogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBpbnQgbCA9IGFbaV0gLSBrOwogICAgICAgICAgICBpbnQgciA9IGFbaV0gKyBrOwoKICAgICAgICAgICAgaWYgKGwgPCAwKSBsID0gMDsgLy8gdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXgKCiAgICAgICAgICAgIG51bXNbbF0gKz0gMTsKICAgICAgICAgICAgbnVtc1tyICsgMV0gLT0gMTsKICAgICAgICB9CgogICAgICAgIC8vIFByZWZpeCBzdW0gdG8gZ2V0IG1heCBvdmVybGFwCiAgICAgICAgaW50IGFuc3dlciA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbWF4VmFsICsgMTsgaSsrKSB7CiAgICAgICAgICAgIGlmIChpID4gMCkgbnVtc1tpXSArPSBudW1zW2kgLSAxXTsKICAgICAgICAgICAgYW5zd2VyID0gTWF0aC5tYXgoYW5zd2VyLCBudW1zW2ldKTsKICAgICAgICB9CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihhbnN3ZXIpOwogICAgfQp9Cg==