#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using ll = long long;
using namespace atcoder;
using lint = long long;
const lint INF = 1ll << 60;
const int mod = 1e9+7;



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

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

int main(void) {
  int n, k; cin >> n >> k;
  segtree<int,op,e> s(n);
	vector<int> d(n);
	for (int i = 0; i < n; i++) {
      cin >> d[i];
    }
  for (int i=0;i<n;i++) 
    s.set(i,0);
  vector<int> dp(n,0);
  for (int i=0;i<n;i++){
    dp[d[i]-1]=s.prod(max(0,d[i]-k),min(n,d[i]+k + 1));
    s.set(i,dp[i]);
  }
  int ans=0;
  for (int i=0;i<n;i++) ans=max(dp[i],ans);
  cout<<ans<<endl;

	return 0;
}