#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 dp[1000005];
signed main(){
n=read(),k=read();
for(int i=1;i<=n;i++)a[i]=read();
vector<pair<int,int>> vct;
for(int i=1;i<=n;i++){
//a[i]<=i
//前面 delete i-a[i]
//i-a[i]+n-i>=k
if(a[i]<=i&&i-a[i]<=k&&n-a[i]>=k){
vct.push_back({i-a[i],i-1});
}
}
//前 i-1 个要删掉 i-a[i] 个。
sort(vct.begin(),vct.end());
for(int i=0;i<(int)vct.size();i++){
for(int j=0;j<i;j++){
if(vct[j].second<=vct[i].second&&vct[j].first+vct[i].second-vct[j].second>=vct[i].first){
dp[vct[i].second]=max(dp[vct[i].second],dp[vct[j].second]+1);
}
}
}
cout<<*max_element(dp,dp+n);
return 0;
}