// #include "bits/stdc++.h"
#include <bits/stdc++.h>
using namespace std;
// using namespace atcoder;
using ll = long long;

template <typename T>
void print_vec(const vector<T>& v, bool is_reverse=false, ll num=0){
  if(num == 0) num = (ll)v.size();
  cout << endl; cout << "i=  ";for(ll i=0; i<num; i++) cout << i << "   ";cout << endl;  
  cout << "    ";
  if(is_reverse) for(ll i=num-1; i>=0; i--){ cout<<v[i]; if(i!=0) cout<<"   ";}
  else for(ll i=0; i<num; i++){ cout<<v[i]; if(i!=num-1) cout<<"   ";}
  cout << endl;
}

// template <typename T>
// void print_pairvec(const vector<T> &v, ll num=0){
//   if(num == 0) num = (ll)v.size();
//   cout << endl; for(ll i=0; i<num; i++){ cout << v[i].first << " " << v[i].second << endl;}
// }
template <typename T>
void print_pairvec(const T &_pair, ll num=0){
  cout << endl; for(pair<ll, int> x: _pair){ cout << x.first << " " << x.second << endl;}
}

template <typename T>
void print_vec2(const vector<vector<T>>& v){
  cout << endl; cout << "       ";
  for(ll i=0; i<v[0].size(); i++) cout << i << "   "; 
  cout << endl;
	for(ll i=0; i<v.size(); i++){
		cout << "i=" << i << ":   ";
		for(ll j=0; j<v[i].size(); j++){
			if(v[i][j] == 0) cout << "\x1B[0m" << v[i][j] << "   ";
      else cout << "\x1B[31m" << v[i][j] << "   ";//https://stackoverrun.com/ja/q/12618775
		}
		cout << "\x1B[0m" << endl;
	}
}

  
// #include <atcoder/string>
#include <atcoder/all> 
int main(){
  ll n, k;
  cin >> n >> k;
  vector<ll> a(n);
  for(int i=0; i<n; i++) cin >> a[i];

  // const ll MAX =3e5+k + 10;
  // vector<ll> dp(MAX + 5, 0);

  // for(int i=0; i<N; i++){
  //   for(int j)
  // }

  vector<stack<ll>> st;
  for(int i=0; i<n; i++){
    bool is_add = false;
    ll size = (ll)st.size();
    for(int j=0; j<size; j++){
      ll x = st[j].top();
      if(abs(x - a[i]) <= k){ 
        stack<ll> b;
        b = st[j];  
        b.push(a[i]);
        st.push_back(b); 
        is_add = true;
      }
    }

    if(is_add == false){
      stack<ll> b;
      b.push(a[i]);
      st.push_back(b);
    }  
  }


  ll ans = 0;
  for(stack<ll> x: st) ans = max(ans, (ll)x.size());

  cout << ans << endl;




  return 0;
  // cout << fixed;//小数点を確実に10桁で表示するためのもの
  // cout << setprecision(10); 
}
