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

int main(){
  int n,k;
  cin >> n >> k;
  vector<int>a(n);
  for(int i=0;i<n;i++)cin >> a.at(i);
  vector<int[2]>dp(n); //[0]は選択 [1]は非選択
  vector<int>nowmax(300001);//各数字の現時点での答え

  dp.at(0)[0]=1,dp.at(0)[1]=0;//初期値
  nowmax.at(a.at(0))=1;
  int c=0,m=0,allmax=1;//allmax=全ての数字の最大答え
  for(int i=1;i<n;i++){
    m=0;
    if(a.at(i)+k>=300000&&a.at(i)-k<=0)m=allmax;//調べずとも最大答えになる
    else for(int j=max(a.at(i)-k,0);j<=a.at(i)+k&&j<=300000;j++)if(nowmax.at(j)>m)m=nowmax.at(j);
    dp.at(i)[0]=m+1;//選択したので+1;
    dp.at(i)[1]=allmax;//選択しないのでallmax
    if(nowmax.at(a.at(i))<dp.at(i)[0])nowmax.at(a.at(i))=dp.at(i)[0];//nowmaxを更新
    if(allmax>dp.at(i)[0])allmax=dp.at(i)[0];//allmaxを更新
  }
  cout << max(allmax,dp.at(n-1)[0]) << endl;
  return 0;
}