/*#include<stdio.h>
int F(int n)
{
if(n==1)
{
return 0;
}
else if(n%2==0)
{
return F(n/2)+1;
}
else
{
return F(n+1)+1;
}
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",F(n));
}*//**
#include<stdio.h>
int n,cnt,len,j;
char str[100001]={};
int main()
{
int temp;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
cnt=0;
scanf("%s",str);
len=strlen(str);
for(j=0;str[j]!=0;j++)
{
if(str[j]!=str[len-j-1])
{
}
}
if(cnt==0){printf("0 ");}
else if(cnt==1){printf("1 ");}
else{printf("2 ");}
}
}*//*
#include<stdio.h>
int arr[101]={},n;
void A()
{
for(int i=1;i<=n;i++){if(i%2==1){arr[i]=0;}}
}
void B()
{
for(int i=2;i<=n;i+=2){arr[i/2]=arr[i];arr[i]=0;}
}
int F_l()
{
int i=0;
while(1)
{
if(arr[i+1]!=0){i++;}
else{return i;}
}
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
arr[i]=i;
}
while(1)
{
if(n==1){break;}
A();
B();
n=F_l();
}
printf("%d",arr[1]);
}*//*
#include<stdio.h>
int main()
{
int n,min=1001;
int bread[100],take[100];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d %d",&take[i],&bread[i]);
if(take[i]<=bread[i]&&bread[i]<min)
{
min=bread[i];
}
}
if(min==1001){printf("-1");}
else {printf("%d",min);}
}*//*
#include<stdio.h>
int main()
{
int n,arr[2500]={},cnt=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for(int i=0;i<n;i++)
{
if(arr[i]==arr[i+1])
{
cnt++;
arr[i]=arr[i+1]=0;
}
else if(arr[i]==0){}
else if(arr[i]>arr[i+1])
{
cnt+=2;
arr[i]=arr[i+1]=0;
}
else
{
cnt++;
arr[i+1]-=arr[i];
arr[i]=0;
}
}
printf("%d",cnt);
}*/
#include<stdio.h>
int n,arr[250000];
int move()
{
int cnt=0;
for(int i=0;i<n;i++)
{
arr[cnt]=arr[i];
if(arr[i]!=0){cnt++;}
}
return cnt;
}
int main()
{
int i,cnt=0,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
while(1)
{
if(cnt==0){break;}
cnt=0;
for(i=0;i<n;i++)
{
if(arr[i]>n||arr[i]<i){arr[i]=0;cnt++;}
}
n=move();
sum+=cnt;
}
for(i=0;i<n;i++)
{
if(arr[arr[i]-1]!=0){arr[i]=0;sum++;}
}
printf("%d",sum);
}