#include<bits/stdc++.h>
using namespace std;
#define ft first
#define sd second
typedef long long ll;
typedef vector<bool> veb;
typedef vector<ll> vel;
typedef vector<vel> vevel;
typedef vector<vevel> vevevel;
typedef vector<pair<ll,ll>> velp;
typedef vector<pair<bool,bool>> velb;
typedef vector<char> vec;
typedef map<ll,ll> mll;
typedef map<char,ll> mcl;
typedef map<ll,char> mlc;
typedef map<ll,bool> mlb;
typedef map<char,char> mcc;
typedef vector<pair<char,char>> vecp;
typedef priority_queue<ll> pql;
const ll mo = 1e9+7;
void slv(){
int n;
cin>>n;
vel v(n+1);
for(int i=1;i<=n;i++){
cin>>v[i];
}
velp odd;
velp even;
for(int i=2;i<=n;i++){
if(v[i]==v[i-1]){
if(i%2==0){
even.emplace_back(i,v[i]);
}else{
odd.emplace_back(i,v[i]);
}
}
}
mll mp;
mll ans;
ll num=1;
ll maxn=0;
int jiezhi=-1;
if(!even.empty()){
mp[even[0].sd]=even[0].ft;
ans[even[0].ft]=1;
maxn=max(maxn,num);
}
for(int i=1;i<even.size();i++){
if(even[i].ft-2!=even[i-1].ft){
maxn=max(maxn,num);
num=0;
jiezhi=even[i].ft;
}
if(mp.find(even[i].sd)!=mp.end()&&mp[even[i].sd]>=jiezhi){
maxn=max(maxn,num);
num-=ans[mp[even[i].sd]];
jiezhi=even[i].ft;
}
num++;
mp[even[i].sd]=even[i].ft;
ans[even[i].ft]=num;
}
if(num!=1) {
maxn = max(maxn, num);
}
mp.clear();
ans.clear();
num=1;
jiezhi=-1;
if(!odd.empty()){
mp[odd[0].sd]=odd[0].ft;
ans[odd[0].ft]=1;
maxn=max(maxn,num);
}
for(int i=1;i<odd.size();i++){
if(odd[i].ft-2!=odd[i-1].ft){
maxn=max(maxn,num);
num=0;
jiezhi=odd[i].ft;
}
if(mp.find(odd[i].sd)!=mp.end()&&mp[odd[i].sd]>=jiezhi){
maxn=max(maxn,num);
num-=ans[mp[odd[i].sd]];
jiezhi=odd[i].ft;
}
num++;
mp[odd[i].sd]=odd[i].ft;
ans[odd[i].ft]=num;
}
if(num!=1){
maxn=max(maxn,num);
}
cout<<maxn*2<<"\n";
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
ll t=1;
while(t--){
slv();
}
return 0;
}