#include <bits/stdc++.h>
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
using namespace std;
const long long LINF = 1e18;
const int INF = 1e9;
int main() {
  int n, k;
  cin >> n >> k;
  vector<map<int, int>> dp(n + 1, map<int, int>());
  for (int i = 1; i <= n; ++i) {
    int a;
    cin >> a;
    for (auto x : dp[i - 1]) {
      if (abs(x.first - a) <= k) {
        chmax(dp[i][a], dp[i - 1][x.first] + 1);
      }
      chmax(dp[i][x.first], dp[i - 1][x.first]);
    }
    chmax(dp[i][a], 1);
  }
  int ans = 0;
  for (auto x : dp[n]) {
    chmax(ans, dp[n][x.first]);
  }
  cout << ans << endl;
  return 0;
}
