#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; const int maxn = 550; int ind[maxn][2],ded[maxn][2],a[maxn],yu[maxn],pre[maxn]; int n; int main() { while(scanf("%d",&n)==1 && n){ for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=n;i>=1;i--){ ind[i][0]=ind[i][1]=1; for(int j=i+1;j<=n;j++){ if(a[i] < a[j]){ ind[i][0] = max(ind[i][0],ind[j][1]+1); ind[i][1] = max(ind[i][1],ind[j][1]+1); } else if(a[i]==a[j]){ ind[i][1] = max(ind[i][1],ind[j][1]+1); } } } for(int i=n;i>=1;i--){ ded[i][0]=ded[i][1]=1; for(int j=i+1;j<=n;j++){ if(a[i] > a[j]){ ded[i][0] = max(ded[i][0],ded[j][1]+1); ded[i][1] = max(ded[i][1],ded[j][1]+1); } else if(a[i]==a[j]){ ded[i][1] = max(ded[i][1],ded[j][1]+1); } } } int res = 0; for(int i=1;i<=n;i++){ res = max(res,ind[i][1]+ded[i][0]-1); res = max(res,ind[i][0]+ded[i][1]-1); } printf("%d\n",res); } }