#include <iostream>
#include <string>
#include <atcoder/all>
#include <vector>
using ll=long long;
using namespace std;
using namespace atcoder;

int op(int a,int b){return max(a,b);}
int 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];
    }

    int size=3000001;
    segtree<int,op,e> seg(size);

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

    int ans=0;
    for(int i=1;i<=N;i++){
        int tmp=seg.get(i);
        if(ans<tmp){
            ans=tmp;
        }
    }

    cout<<ans<<endl;

    return 0;
}