#include <bits/stdc++.h>
using namespace std;
const int MAXLEN = 5e5 + 5;
vector<int> g[MAXLEN];
int n, a[MAXLEN], dp[2][MAXLEN], ans = 0;
bool p = true, q = true;
signed main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
if (g[a[i]].size() != 0) {
p = false;
}
if (a[i] < a[i - 1]) {
q = false;
}
g[a[i]].push_back(i);
}
if (p) {
printf("0");
return 0;
}
if (q) {
int ans = 0;
for (int i = 2; i <= n; i++) {
if (a[i] == a[i - 1] && a[i - 1] != a[i - 2])
ans += 2;
}
printf("%d", ans);
return 0;
}
dp[0][0] = dp[1][0] = -2;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < g[a[i]].size(); j++) {
dp[0][i] = max(dp[0][i], dp[1][g[a[i]][j]] + 2);
}
for (int j = i - 1; j >= 1; j--) {
if (a[j] == a[i])
continue;
dp[1][i] = max(dp[1][i], dp[0][j]);
}
if (i == g[a[i]][0]) {
dp[0][i] = 0;
}
ans = max(ans, dp[0][i]);
}
printf("%d", ans);
return 0;
}