#include #define int long long using namespace std; const int INF=10000000000; signed main(){ int N; cin>>N; vector A(N); for(int &i:A)cin>>i; vector B(N+2),C(N+2),D(N+1,INF),E(N+1,INF),F(N+1,INF),G(N+1,INF),H(N+2),I(N+2); D[0]=-INF,E[0]=-INF,F[0]=-INF,G[0]=-INF; for(int i=0;i0;i--){ C[i]=C[i+1]; int it=lower_bound(E.begin(),E.end(),A[i-1])-E.begin(); if(E[it]==INF)C[i]++; E[it]=A[i-1]; } for(int i=0;i0;i--){ I[i]=I[i+1]; int it=lower_bound(G.begin(),G.end(),-A[i-1])-G.begin(); if(G[it]==INF)I[i]++; G[it]=-A[i-1]; } int ans=0; for(int i=1;i<=N;i++)ans=max(ans,min(B[i],C[i])); for(int i=1;i<=N;i++)ans=max(ans,min(H[i],I[i])); cout<