#include <bits/stdc++.h>
using namespace std;
const int mxn(3e5 + 10), mxm(4e5 + 10);
const long long modl(998244353);
int nm, n, m, p, t, k;
int h[mxn << 2];
int _n;
int ql, qr;
int ans;
int a[mxn], b[mxn], c[mxn];
void init() {
  _n = 1;
  while (_n < n) _n <<= 1;
  for (int i = 0; i < _n << 1; ++i) h[i] = 0;
}
void upd(int o, int x) {
  o += _n;
  h[o] = x;
  o >>= 1;
  while (o) {
    h[o] = max(h[o << 1], h[(o << 1) + 1]);
    o >>= 1;
  }
}
int qry(int o, int l, int r) {
  if (qr <= l || r <= ql) return 0;
  if (ql <= l && qr >= r) return h[o];
  int ml = qry(o << 1, l, (l + r) >> 1);
  int mr = qry((o << 1) + 1, (l + r) >> 1, r);
  return max(ml, mr);
}
int main() {
  ios_base::sync_with_stdio(false);
  while (cin >> n >> m) {
    init();
    while (n--) {
      cin >> p;
      ql = p - m, qr = p + m + 1;
      upd(p, qry(1, 0, _n) + 1);
    }
    ans = h[1];
    cout << ans;
    cout << endl;
  }
  return 0;
}
