#include <atcoder/all>
#include <bits/stdc++.h>
#define rep(i,n) for (int i = 0; i < (n); ++i)
#define rrep(i,n) for(int i = 1; i <= (n); ++i)
#define drep(i,n) for(int i = (n)-1; i >= 0; --i)
using namespace std;
using namespace atcoder;
const int INF = 1001001001;
const long long LINF = 1001002003004005006ll;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }
typedef long long ll;
typedef pair<int,int> P;

int op(int a,int b) {return max(a,b);}

int e() {return -1;};

int main(){
  int n,k;
  cin >> n >> k;
  vector<int> a(n);
  rep(i,n)cin >> a[i];

  vector<int> v(300100,0);
  segtree<int,op,e> seg(v);

  rep(i,n){
    int l = max(0,a[i]-k);
    int r = min(300000,a[i]+k);
    int mx = seg.prod(l,r);
    seg.set(a[i],mx+1);
  }
  cout << seg.all_prod()+1 << endl;
}