#include<cstdio>
#include<map>
#include<algorithm>
using namespace std;
const int nmax=5005;
map<int,int> m;
int sorted[nmax],v[nmax];
struct al
{
int start,x;
}d[nmax];
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int n,i,j,cnt=0,lmax;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&v[i]),sorted[i]=v[i];
sort(sorted+1,sorted+n+1);
for(i=1;i<=n;++i)
if(m.find(sorted[i])==m.end())
m[sorted[i]]=++cnt;
for(i=1;i<=n;++i)
v[i]=m[v[i]];
lmax=cnt;
int lngmax=-1;
for(i=1;i<=n;++i)
{
d[i].x=1;
d[i].start=i;
for(j=i-1;j;j--)
if(v[j]<v[i]&&(d[i].x<d[j].x+1 || (d[i].x==d[j].x && d[i].start<d[j].start)))
{
d[i].start=d[j].start;
d[i].x=d[j].x+1;
}
if(d[i].x==lmax&&i-d[i].start+1>lngmax)
lngmax=i-d[i].start+1;
}
printf("%d",lngmax);
}