#include<atcoder/all>
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<stdio.h>
#include<locale.h>
#include<set>
#include<stack>
#include<queue>
#include<math.h>
using namespace atcoder;
using namespace std;

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

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

segtree<int, op, e> seg(300005);

int main()
{
 scanf("%d %d",&n,&k);
 int y,l,r;
 for(int i=0;i<n;i++)
 {
	scanf("%d",&y);
	if((y-k)<=0){l=1;} else{l=y-k;}
	if((y+k)>=n){r=n;} else{r=y+k;}
	int x=seg.prod(l,r+1)+1;
	seg.set(y,x);
 }
 int ans=seg.all_prod();
 printf("%d",ans);
}