#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 minimize(T& a, const T& b) {
if (b < a) a = b;
}
const int N = 5e2 + 5;
int n;
int a[N];
// dp(l, r) = Giá trị thu được khi gộp đoạn [l, r] của mảng a 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 && u != 0) ans = u + 1;
}
return ans;
}
int f[N]; // f[i] = Độ dài tối thiểu của mảng a[1..i] sau khi thực hiện thao tác
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
memset(memo, -1, sizeof memo);
for (int i = 1; i <= n; i++) {
f[i] = INF;
for (int j = 0; j < i; j++) {
if (dp(j + 1, i) != 0) minimize(f[i], f[j] + 1);
}
}
cout << f[n] << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBtaW5pbWl6ZShUJiBhLCBjb25zdCBUJiBiKSB7CglpZiAoYiA8IGEpIGEgPSBiOyAKfQoKY29uc3QgaW50IE4gPSA1ZTIgKyA1OyAKCmludCBuOyAKaW50IGFbTl07IAoKLy8gZHAobCwgcikgPSBHacOhIHRy4buLIHRodSDEkcaw4bujYyBraGkgZ+G7mXAgxJFv4bqhbiBbbCwgcl0gY+G7p2EgbeG6o25nIGEgduG7gSB0aMOgbmggMSBwaOG6p24gdOG7rQppbnQgbWVtb1tOXVtOXTsgCgppbnQgZHAoaW50IGwsIGludCByKSB7CglpZiAobCA9PSByKSByZXR1cm4gYVtsXTsgCgoJaW50JiBhbnMgPSBtZW1vW2xdW3JdOyAKCWlmIChhbnMgIT0gLTEpIHJldHVybiBhbnM7ICAgCgoJYW5zID0gMDsgIAoJZm9yIChpbnQgayA9IGw7IGsgPCByOyBrKyspIHsKCQlpbnQgdSA9IGRwKGwsIGspLCB2ID0gZHAoayArIDEsIHIpOyAKCQlpZiAodSA9PSB2ICYmIHUgIT0gMCkgYW5zID0gdSArIDE7IAoJfQoKCXJldHVybiBhbnM7IAkKfQoKaW50IGZbTl07IC8vIGZbaV0gPSDEkOG7mSBkw6BpIHThu5FpIHRoaeG7g3UgY+G7p2EgbeG6o25nIGFbMS4uaV0gc2F1IGtoaSB0aOG7sWMgaGnhu4duIHRoYW8gdMOhYwoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG47IAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXTsgCgoJbWVtc2V0KG1lbW8sIC0xLCBzaXplb2YgbWVtbyk7ICAKCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlmW2ldID0gSU5GOyAKCQlmb3IgKGludCBqID0gMDsgaiA8IGk7IGorKykgewoJCQlpZiAoZHAoaiArIDEsIGkpICE9IDApIG1pbmltaXplKGZbaV0sIGZbal0gKyAxKTsgCgkJfQoJfQoKCWNvdXQgPDwgZltuXSA8PCAnXG4nOyAKfQ==