#include <bits/stdc++.h>
int c[300002];
void merge(int i, int j, int s[][2]) {
  if (i != j) {
    merge(i, (i + j) / 2, s);
    merge((i + j) / 2 + 1, j, s);
    int a = i, b = (i + j) / 2 + 1;
    int d;
    for (d = i; d <= j; d++) {
      if ((i + j) / 2 < a) {
        c[d] = s[b][1];
        b++;
      } else if (j < b) {
        c[d] = s[a][1];
        a++;
      } else if (s[a][1] > s[b][1]) {
        c[d] = s[a][1];
        a++;
      } else {
        c[d] = s[b][1];
        b++;
      }
    }
    for (d = i; d <= j; d++) s[d][1] = c[d];
  }
}
int main() {
  int n, k, i, j;
  scanf("%d%d", &n, &k);
  int a[n + 1], temp[n + 1][2], templen = 0;
  for (i = 0; i < n; i++) scanf("%d", &a[i]);
  for (i = 0; i < n; i++) {
    int check = 0;
    for (j = 0; j < templen; j++)
      if (abs(a[i] - temp[j][0]) <= k) {
        temp[j][1] = temp[j][1] + 1;
        temp[j][0] = a[i];
        check = 1;
      }
    if (check == 0) temp[templen][0] = a[i];
    temp[templen][1] = 1;
    templen++;
  }
  merge(0, templen - 1, temp);
  printf("%d\n", temp[0][1]);
  return 0;
}
