| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[1100];
int dp[1100][1100];//dp[i][j]表示前i个数删除j个数后的最大值
/* dp[i][j]=max{
dp[i-1][j]+1;//i在自己的位置上,即a[i]=i-j
dp[i-1][j-1];//i不在自己的位置上,删掉
dp[i-1][j];//i不在自己的位置上,占位置
}*/
int main()
{
int n;
while(scanf("%d",&n)==1)
{
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
{
for(int j=0;j<=i;j++)
{
if(a[i]==i-j) dp[i][j]=dp[i-1][j]+1;
else dp[i][j]=dp[i-1][j-1];
if(dp[i-1][j]>dp[i][j]) dp[i][j]=dp[i-1][j];
}
}
int _max=0;
for(int i=0;i<=n;i++) if(dp[n][i]>_max) _max=dp[n][i];
printf("%d/n",_max);
}
return 0;
}