//NiceDuck
#include "bits/stdc++.h"
typedef long long ll;
using namespace std;
#define FILE "000"
#define foru(i,a,b) for(int i=(int)(a); i<=(int)(b); ++i)
#define ford(i,a,b) for(int i=(int)(a); i>=(int)(b); --i)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define MOD 1000000007
#define el "\n"
#define MAX 200005
int n,a[MAX],f[MAX],bit[MAX];
vector<int> b;
void pre()
{
foru(i,1,n) b.pb(a[i]);
sort(b.begin(),b.end());
b.erase(unique(b.begin(),b.end()),b.end());
foru(i,1,n) a[i]=lower_bound(b.begin(),b.end(),a[i])-b.begin()+1;
}
void update(int pos, int val)
{
for(;pos<=n;pos+=(pos&(-pos))) bit[pos]=max(bit[pos],val);
}
int query(int pos)
{
int ans=0;
for(;pos>=1;pos-=(pos&(-pos))) ans=max(ans,bit[pos]);
return ans;
}
void calc()
{
int ans=1;
foru(i,1,n)
{
f[i]=1;
int q=query(a[i]-1);
f[i]+=q;
update(a[i],f[i]);
}
memset(bit,0,sizeof(bit));
ford(i,n,1)
{
int cur=1;
int q=query(a[i]-1);
cur+=q;
update(a[i],cur);
ans=max(ans,f[i]+cur-1);
}
cout<<ans;
}
int main()
{
fastio
#ifndef ONLINE_JUDGE
freopen(FILE ".inp","r",stdin);
freopen(FILE ".out","w",stdout);
#endif // ONLINE_JUDGE
cin>>n;
foru(i,1,n)cin>>a[i];
pre();
calc();
return 0;
}
Ly9OaWNlRHVjawojaW5jbHVkZSAiYml0cy9zdGRjKysuaCIKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgRklMRSAiMDAwIgojZGVmaW5lIGZvcnUoaSxhLGIpIGZvcihpbnQgaT0oaW50KShhKTsgaTw9KGludCkoYik7ICsraSkKI2RlZmluZSBmb3JkKGksYSxiKSBmb3IoaW50IGk9KGludCkoYSk7IGk+PShpbnQpKGIpOyAtLWkpCiNkZWZpbmUgZmFzdGlvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTsKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgcGlsIHBhaXI8aW50LGxsPgojZGVmaW5lIHBsaSBwYWlyPGxsLGludD4KI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBNQVggMjAwMDA1CgppbnQgbixhW01BWF0sZltNQVhdLGJpdFtNQVhdOwp2ZWN0b3I8aW50PiBiOwoKdm9pZCBwcmUoKQp7CiAgICBmb3J1KGksMSxuKSBiLnBiKGFbaV0pOwogICAgc29ydChiLmJlZ2luKCksYi5lbmQoKSk7CiAgICBiLmVyYXNlKHVuaXF1ZShiLmJlZ2luKCksYi5lbmQoKSksYi5lbmQoKSk7CiAgICBmb3J1KGksMSxuKSBhW2ldPWxvd2VyX2JvdW5kKGIuYmVnaW4oKSxiLmVuZCgpLGFbaV0pLWIuYmVnaW4oKSsxOwp9Cgp2b2lkIHVwZGF0ZShpbnQgcG9zLCBpbnQgdmFsKQp7CiAgICBmb3IoO3Bvczw9bjtwb3MrPShwb3MmKC1wb3MpKSkgYml0W3Bvc109bWF4KGJpdFtwb3NdLHZhbCk7Cn0KCmludCBxdWVyeShpbnQgcG9zKQp7CiAgICBpbnQgYW5zPTA7CiAgICBmb3IoO3Bvcz49MTtwb3MtPShwb3MmKC1wb3MpKSkgYW5zPW1heChhbnMsYml0W3Bvc10pOwogICAgcmV0dXJuIGFuczsKfQoKdm9pZCBjYWxjKCkKewogICAgaW50IGFucz0xOwogICAgZm9ydShpLDEsbikKICAgIHsKICAgICAgICBmW2ldPTE7CiAgICAgICAgaW50IHE9cXVlcnkoYVtpXS0xKTsKICAgICAgICBmW2ldKz1xOwogICAgICAgIHVwZGF0ZShhW2ldLGZbaV0pOwogICAgfQogICAgbWVtc2V0KGJpdCwwLHNpemVvZihiaXQpKTsKICAgIGZvcmQoaSxuLDEpCiAgICB7CiAgICAgICAgaW50IGN1cj0xOwogICAgICAgIGludCBxPXF1ZXJ5KGFbaV0tMSk7CiAgICAgICAgY3VyKz1xOwogICAgICAgIHVwZGF0ZShhW2ldLGN1cik7CiAgICAgICAgYW5zPW1heChhbnMsZltpXStjdXItMSk7CiAgICB9CiAgICBjb3V0PDxhbnM7Cn0KCmludCBtYWluKCkKewogICAgZmFzdGlvCiAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbihGSUxFICIuaW5wIiwiciIsc3RkaW4pOwogICAgZnJlb3BlbihGSUxFICIub3V0IiwidyIsc3Rkb3V0KTsKICAgICNlbmRpZiAvLyBPTkxJTkVfSlVER0UKICAgIAogICAgY2luPj5uOwogICAgZm9ydShpLDEsbiljaW4+PmFbaV07CiAgICBwcmUoKTsKICAgIGNhbGMoKTsKICAgIAogICAgcmV0dXJuIDA7Cn0=