#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 0;
}


signed main(){
    // cout << fixed << setprecision(10) << flush;

    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    for(int i=0; i<n; i++){
        cin >> a[i];
    }

    segtree<int, op, e> sg(300001);

    for(int i=0; i<n; i++){
        int l = max(0, a[i]-k);
        int r = min(300000, a[i]+k);
        int next = max(sg.get(a[i]), sg.prod(l, r+1)+1);
        sg.set(a[i], next);
    }

    cout << sg.all_prod() << endl;


    return 0;
}