#include <bits/stdc++.h>
#include <atcoder/all>

using namespace std;
using namespace atcoder;

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

int e() {
    return -1;
}

int main() {
    int N, K;

    cin >> N >> K;

    vector<int> A(N);

    for (int i = 0; i < N; i++) {
        cin >> A[i];
    }

    int max_val = *max_element(A.begin(), A.end());

    segtree<int, op, e> seg(max_val+1);

    seg.set(A[0], 1);

    for (int i = 1; i < N; i++) {
        seg.set(A[i], seg.prod(max(0, A[i] - K), min(max_val, A[i] + K) + 1) + 1);
    }

    cout << seg.prod(1, max_val+1) << endl;

    return 0;
}