#include<bits/stdc++.h>
using namespace std;
#define int long long
int read(){
int n=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch)){
n=n*10+ch-'0';
ch=getchar();
}
return n*f;
}
int n,k;
int a[1000005];
int vct[1000005];
int dp[1000005];
signed main(){
n=read(),k=read();
for(int i=1;i<=n;i++)a[i]=read(),vct[i]=-1;
vct[0]=-1;
vector<pair<int,int>> vc;
for(int i=1;i<=n;i++){
//如果想要成为答案
if(a[i]<=i){
//delete i-1~k prior.
//i-a[i] 个
if(i-a[i]<=min(i-1,k)&&n-a[i]>=k){
//1到p删d个
vct[i]=i-a[i];
vc.push_back({i-a[i],i});
//vct.push_back({i-a[i],i-1});
}
}
}
sort(vc.begin(),vc.end());
for(int i=0;i<(int)vc.size();i++){
pair<int,int> it=vc[i];
int d=it.first,pos=it.second;
dp[pos]=1;
for(int j=0;j<i;j++){
if(pos-d>vc[j].second-vc[j].first){
dp[pos]=max(dp[pos],dp[vc[j].second]+1);
}
}
}
cout<<*max_element(dp+1,dp+n+1);
return 0;
}