#include <atcoder/segtree>
#include <bits/stdc++.h>
using namespace std;
using namespace atcoder;
#define rep(i,n) for (int i = 0; i < (n); ++i)
int nmax = 300005;

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

int e() {
    return 0;
}

int main() {
  int n,k;
  cin >> n >> k;
  vector<int> a(n);
  rep(i,n) cin >> a[i];
  
  segtree<int,op,e> dp(nmax);
  
  for(int i=0;i<n;i++){
    int x = a[i];
    int l = max(x-k,0);
    int r = min(x+k+1,nmax);
    int now = dp.prod(l,r)+1;
    dp.set(x,now);
  }

  int ans = dp.prod(0,nmax);
  cout << ans << endl;
  
  return(0);
}