#include <bits/stdc++.h>
using namespace std;
using graph = vector<vector<int>>;
using graph2 = vector<vector<pair<int, int>>>;
long long mod(long long x, long long y) {
  if (x >= 0 || x % y == 0) return x % y;
  return y + x % y;
}
long long dv0(long long x, long long y) {
  if (x >= 0 || x % y == 0) return x / y;
  return x / y - 1;
}
long long dv1(long long x, long long y) {
  if (x % y == 0) return dv0(x, y);
  return dv0(x, y) + 1;
}
long long M = 1e9 + 7;
int quick_pow(int x, int p) {
  int a = 1, po = x;
  while (p) {
    if (p & 1) a = 1ll * a * po % M;
    po = 1ll * po * po % M;
    p >>= 1;
  }
  return a;
}
int main() {
  int N, K;
  cin >> N >> K;
  int a[N];
  for (int i = 0; i < (int)(N); i++) {
    cin >> a[i];
  }
  int check[N];
  for (int i = 0; i < (int)(N); i++) {
    check[N] = 0;
  }
  check[0] = 1;
  for (int i = 0; i < (int)(N); i++) {
    int b = 0;
    for (int k = 0; k < (int)(i); k++) {
      if (abs(a[k] - a[i]) <= K) {
        b = max(b, check[k] + 1);
      }
    }
    check[i] = max(b, 1);
  }
  cout << check[N - 1] << endl;
}
