#include<bits/stdc++.h>
using namespace std;
int dp[1000000],a[1000000],n,mx1,to[1000000],ft[1000000];
vector<int> vct[600000];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
vct[a[i]].push_back(i);
}if(n>5000){
int cnt=0,mx2=0;
for(int i=1;i<=n;i++){
to[a[i]]++;
mx2=max(mx2,to[a[i]]);
}if(mx2==2){
for(int i=2;i<=n;i++){
ft[i-1]=max(ft[i-2],dp[i-1]);
int j1=-1;
if(vct[a[i]][1]==i) j1=vct[a[i]][0];
if(j1!=-1) dp[i]=2;
dp[i]+=ft[max(j1-1,0)];
mx1=max(mx1,dp[i]);
}cout<<mx1;
return 0;
}for(int i=1;i<=1000000;i++){
if(to[i]>=2){
cnt+=2;
}
}cout<<cnt;
return 0;
}
for(int i=2;i<=n;i++){
int j1=-1;
for(int j=i-1;j>=1;j--){
if(a[j]==a[i]){
j1=j;
break;
}
}if(j1!=-1) dp[i]=2;
int mx=0;
for(int j=j1-1;j>=1;j--){
if(a[j]!=a[i]){
mx=max(mx,dp[j]);
}
}dp[i]+=mx;
mx1=max(mx1,dp[i]);
}cout<<mx1;
return 0;
}