#include <atcoder/all>
using namespace std;
using namespace atcoder;
using S = int;
S op(S a, S b)
{
    return max(a, b);
}
S e()
{
    return 0;
}
int main()
{
    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    for(int i = 0; i < n; i++) cin >> a[i];
    segtree<S, op, e> seg(300000);
    int ans = 0;
    for(int i = 0; i < n; i++)
    {
        int l = max(0, a[i] - k);
        int r = min(300000, a[i] + k);
        int tmp = seg.prod(l, r+1) + 1;
        ans = max(ans, tmp);
        seg.set(a[i], tmp);
    }
    cout << ans << endl;
}
