#include <algorithm>
#include <cstring>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
const int N=1000;
int n,a[N],bs[N],bj[N];
int l1[N],l2[N];
int main(int argc, char** argv) {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
bs[1]=a[1];
int len =1;
for(int i=2;i<=n;i++){
if(a[i]>bs[len]){
bs[++len]=a[i];
}else{
int l=1,r=len;
while(l<=r){
int mid=(l+r)/2;
if(a[i]>bs[mid]) l=mid+1;
else r=mid-1;
}
bs[l]=a[i];
}
l1[i]=len;
}
len=1;
l2[n]=l1[1]=1;
bj[1]=a[n];
for(int i=n-1;i>=1;i--){
if(a[i]>bj[len]){
bj[++len]=a[i];
}else{
int l=1,r=len;
while(l<=r){
int mid=(l+r)/2;
if(a[i]>bj[mid]) l=mid+1;
else r=mid-1;
}
bj[l]=a[i];
}
l2[i]=len;
}
int ans=0;
for(int i=1;i<=n;i++){
ans=max(ans,l1[i]+l2[i]-1);
}
cout<<ans;
return 0;
}