#include<bits/stdc++.h>
using namespace std;
const int MAXN=5e5+100;
int n,nxt[MAXN],last[MAXN],tr[MAXN*4],a[MAXN],dp[MAXN];
void modify(int x, int l, int r, int id, int y) {
if (l==r) {
tr[x]=max(tr[x],y);
return;
}
int mid=(l+r)>>1;
if (id<=mid) {
modify(x*2,l,mid,id,y);
} else {
modify(x*2+1,mid+1,r,id,y);
}
tr[x]=max(tr[x*2],tr[x*2+1]);
}
int query(int x, int l, int r, int ql, int qr) {
if (l>=ql && r<=qr) {
return tr[x];
}
if (l>qr || r<ql) {
return 0;
}
int mid=(l+r)>>1;
return max(query(x*2,l,mid,ql,qr),query(x*2+1,mid+1,r,ql,qr));
}
int main() {
cin >> n;
for (int i=1; i<=n; i++) {
cin >> a[i];
}
for (int i=n; i>=1; i--) {
last[i]=nxt[a[i]];
nxt[a[i]]=i;
}
int ans=0;
for (int i=1; i<=n; i++) {
if (last[i]!=0) {
dp[last[i]]=max({dp[i],query(1,1,n,1,a[i]-1)+2,query(1,1,n,a[i]+1,n)+2});
}
modify(1,1,n,a[i],dp[i]);
ans=max(ans,dp[i]);
}
cout << ans;
return 0;
}
/*
1 1 1 1 2 2 1 1 3
1 1 1
*/
wa第1,2个点,90分救助