双指针awa
#include<bits/stdc++.h>
//#define int long long
#define I_love_Foccarus return
#define cin_fast ios::sync_with_stdio(false) , cin.tie(0) , cout.tie(0)
#define endl '\n'
//#define getchar getc
#define pii pair<int,int>
#define mk(a,b) make_pair(a,b)
#define fi first
#define se second
#define pd(a) push_back(a)
#define in(a) a = read_int()
using namespace std;
const int Size = 1 << 14;
const int N = 5e4 + 5;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
inline char getc(){
static char syn[Size] , *begin = syn , *end = syn;
if(begin == end) begin = syn , end = syn + fread(syn , 1 , Size , stdin);
I_love_Foccarus *begin ++;
}
inline int read_int() {
int x = 0;
char ch = getchar();
bool f = 0;
while('9' < ch || ch < '0') f |= ch == '-' , ch = getchar();
while('0' <= ch && ch <= '9') x = (x << 3) + (x << 1) + ch - '0' , ch = getchar();
I_love_Foccarus f ? -x : x;
}
int a[N] , b[N] , c[N];
signed main() {
//cin_fast;
int n , k;
in(n) , in(k);
for(int i = 1 ; i <= n ; i ++) in(a[i]);
sort(a + 1 , a + n + 1);
int l = 1 , r = 1 , ans = 0;
while(r <= n) {
while(a[r] - a[l] > k) l ++;
b[r] = l;
c[r] = max(r - l + 1 , c[l - 1]);
ans = max(ans , c[l - 1] + r - l + 1);
r ++;
}
cout<<ans;
I_love_Foccarus 0;
}