#include<bits/stdc++.h>
using namespace std;

int n,k,sz;
int dat[1100000];

void upd(int pos,int val){
    pos+=sz-1;
    dat[pos]=val;
    while(pos>1){
        pos>>=1;
        dat[pos]=max(dat[pos<<1],dat[pos<<1|1]);
    }
}

int qry(int id,int l,int r,int ql,int qr){
    if(qr<l||r<ql)return 0;
    if(ql<=l&&r<=qr)return dat[id];
    return max(qry(id<<1,l,(l+r)>>1,ql,qr),qry(id<<1|1,((l+r)>>1)+1,r,ql,qr));
}

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin>>n>>k;
    sz=1;
    while(sz<300001)sz<<=1;
    for(int i=1;i<=n;i++){
        int a;
        cin>>a;
        a++;
        upd(a,qry(1,1,sz,a-k,a+k)+1);
    }
    cout<<qry(1,1,sz,1,300001)<<endl;

    return 0;
}