#include <atcoder/convolution>
#include <atcoder/dsu>
#include <atcoder/fenwicktree>
#include <atcoder/lazysegtree>
#include <atcoder/math>
#include <atcoder/maxflow>
#include <atcoder/mincostflow>
#include <atcoder/modint>
#include <atcoder/scc>
#include <atcoder/segtree>
#include <atcoder/string>
#include <atcoder/twosat>

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

int main() {
  long N,K;
  cin>>N>>K;

  vector<long> a(N);


  for(int i=0;i<N;i++){
    cin>>a[i];
    }
    vector<vector<long>> dp(N+1,vector<long>(2));

  for(int i=0;i<N;i++) dp[i][0]=1,dp[i][1]=a[i];
  dp[0][1]=a[0];

  for(int i=0;i<N;i++){
    if(abs(dp[i+1][1]-dp[i][1])<=K){
      //cout<<"Y"<<endl;
      dp[i+1][0]=dp[i][0]+1;
      dp[i+1][1]=a[i+1];
    }
    else{
      dp[i+1][0]=dp[i][0];
      //dp[i+1][1]=dp[i][1];
    }
    //cout<<dp[i][0]<<dp[i][1]<<endl;
  }
  long ans=0;
  for(int i=0;i<N;i++){
    ans=max(ans,dp[i][0]);
  }
cout<<ans<<endl;
}
