#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
template<typename T>
void maximize(T& a, const T& b) {
if (a < b) a = b;
}
const int N = 3e2 + 5;
int n;
int a[N];
int number_of_subtask() {
if (n <= 10) return 1;
return 2;
}
namespace sub1 {
int ans;
bool removed[11];
void backtrack(int step) {
if (step == n) return;
for (int i = 1; i + 1 <= n; i++) {
if (removed[i]) continue;
for (int j = i + 1; j <= n; j++) {
if (!removed[j]) {
if (a[i] == a[j]) {
a[i] += 2;
removed[j] = true;
maximize(ans, a[i]);
backtrack(step + 1);
removed[j] = false;
a[i] -= 2;
}
break;
}
}
}
}
void solve() {
ans = 0;
for (int i = 1; i <= n; i++) maximize(ans, a[i]);
backtrack(0);
cout << ans << '\n';
}
}
namespace sub2 {
// dp(l, r) = Giá trị v lớn nhất đạt được khi gộp đoạn [l, r] về thành 1 phần tử
int memo[N][N];
int dp(int l, int r) {
if (l == r) return a[l];
int& ans = memo[l][r];
if (ans != -1) return ans;
ans = 0;
for (int k = l; k < r; k++) {
int u = dp(l, k), v = dp(k + 1, r);
if (u == v) maximize(ans, u + 2);
}
return ans;
}
void solve() {
memset(memo, -1, sizeof memo);
int ans = 0;
for (int l = 1; l <= n; l++) {
for (int r = l; r <= n; r++) {
maximize(ans, dp(l, r));
}
}
cout << ans << '\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
int subtask = number_of_subtask();
if (subtask == 1) sub1::solve();
if (subtask == 2) sub2::solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBtYXhpbWl6ZShUJiBhLCBjb25zdCBUJiBiKSB7CglpZiAoYSA8IGIpIGEgPSBiOyAgCn0KCmNvbnN0IGludCBOID0gM2UyICsgNTsgCgppbnQgbjsgCmludCBhW05dOyAKCmludCBudW1iZXJfb2Zfc3VidGFzaygpIHsKCWlmIChuIDw9IDEwKSByZXR1cm4gMTsgCglyZXR1cm4gMjsgCn0KCm5hbWVzcGFjZSBzdWIxIHsKCWludCBhbnM7ICAKCglib29sIHJlbW92ZWRbMTFdOyAgCgoJdm9pZCBiYWNrdHJhY2soaW50IHN0ZXApIHsKCQlpZiAoc3RlcCA9PSBuKSByZXR1cm47ICAgCgoJCWZvciAoaW50IGkgPSAxOyBpICsgMSA8PSBuOyBpKyspIHsKCQkJaWYgKHJlbW92ZWRbaV0pIGNvbnRpbnVlOyAKCQkJZm9yIChpbnQgaiA9IGkgKyAxOyBqIDw9IG47IGorKykgewoJCQkJaWYgKCFyZW1vdmVkW2pdKSB7CgkJCQkJaWYgKGFbaV0gPT0gYVtqXSkgewoJCQkJCQlhW2ldICs9IDI7ICAKCQkJCQkJcmVtb3ZlZFtqXSA9IHRydWU7CgkJCQkJCW1heGltaXplKGFucywgYVtpXSk7ICAgCgkJCQkJCWJhY2t0cmFjayhzdGVwICsgMSk7IAoJCQkJCQlyZW1vdmVkW2pdID0gZmFsc2U7IAoJCQkJCQlhW2ldIC09IDI7IAoJCQkJCX0KCQkJCQlicmVhazsgCgkJCQl9CgkJCX0KCQl9Cgl9CgoJdm9pZCBzb2x2ZSgpIHsKCQlhbnMgPSAwOyAgCgkJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBtYXhpbWl6ZShhbnMsIGFbaV0pOyAKCQliYWNrdHJhY2soMCk7CgkJY291dCA8PCBhbnMgPDwgJ1xuJzsgIAoJfQp9CgpuYW1lc3BhY2Ugc3ViMiB7CgkvLyBkcChsLCByKSA9IEdpw6EgdHLhu4sgdiBs4bubbiBuaOG6pXQgxJHhuqF0IMSRxrDhu6NjIGtoaSBn4buZcCDEkW/huqFuIFtsLCByXSB24buBIHRow6BuaCAxIHBo4bqnbiB04butCglpbnQgbWVtb1tOXVtOXTsgCgoJaW50IGRwKGludCBsLCBpbnQgcikgewoJCWlmIChsID09IHIpIHJldHVybiBhW2xdOyAKCgkJaW50JiBhbnMgPSBtZW1vW2xdW3JdOwoJCWlmIChhbnMgIT0gLTEpIHJldHVybiBhbnM7IAoKCQlhbnMgPSAwOyAKCQlmb3IgKGludCBrID0gbDsgayA8IHI7IGsrKykgewoJCQlpbnQgdSA9IGRwKGwsIGspLCB2ID0gZHAoayArIDEsIHIpOyAKCQkJaWYgKHUgPT0gdikgbWF4aW1pemUoYW5zLCB1ICsgMik7IAoJCX0KCgkJcmV0dXJuIGFuczsgCgl9CgoJdm9pZCBzb2x2ZSgpIHsKCQltZW1zZXQobWVtbywgLTEsIHNpemVvZiBtZW1vKTsgCgkKCQlpbnQgYW5zID0gMDsgCgkJZm9yIChpbnQgbCA9IDE7IGwgPD0gbjsgbCsrKSB7CgkJCWZvciAoaW50IHIgPSBsOyByIDw9IG47IHIrKykgewoJCQkJbWF4aW1pemUoYW5zLCBkcChsLCByKSk7IAoJCQl9CgkJfQoKCQljb3V0IDw8IGFucyA8PCAnXG4nOyAKCX0KfQoKCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAKCWNpbi50aWUobnVsbHB0cik7IAkKCWNpbiA+PiBuOyAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGFbaV07IAoKCWludCBzdWJ0YXNrID0gbnVtYmVyX29mX3N1YnRhc2soKTsgCgoJaWYgKHN1YnRhc2sgPT0gMSkgc3ViMTo6c29sdmUoKTsgCglpZiAoc3VidGFzayA9PSAyKSBzdWIyOjpzb2x2ZSgpOyAgIAp9