#include <bits/stdc++.h>
#include <iostream>
#include <ctime>
#include <atcoder/all>
using namespace std;
#define _LL long long
#define rep(i, n) for (_LL i = 0; i < (_LL)(n); i++)
#define vecrep(itr, v) for (auto itr = (v).begin(); itr != (v).end(); itr++)
using namespace atcoder;

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

int e() {
    return (int)(0);
}


int main()
{
    ios::sync_with_stdio(false); cin.tie(nullptr); 
    int n, k; cin >> n >> k;
    segtree<int, op, e> seg(n);
    rep(i, n)
    {
        int a; cin >> a;
        int tmp = seg.prod(max(0, a - k), min(n, a + k + 1));
        seg.set(a, tmp + 1);
    }
    cout << seg.all_prod();
}