#include<bits/stdc++.h>
using namespace std;typedeflonglong ll;constint maxn =550;const ll mod =998244353;int n;int dp[maxn], a[maxn];
vector<int> v[maxn];
stack<int> s;
bool check(int x){while(!s.empty()&& s.top()==x){
x = x+1;
s.pop();}
s.push(x);if(s.size()==1)return true;elsereturn false;}intmain(){//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);scanf("%d",&n);for(int i =1; i <= n; i++)scanf("%d",&a[i]);for(int l =1; l <= n; l++){while(!s.empty()) s.pop();for(int r = l; r <= n; r++)if(check(a[r])) v[r].push_back(l);}for(int i =1; i <= n; i++) dp[i]= INT_MAX;for(int r =1; r <= n; r++)for(auto l : v[r])
dp[r]=min(dp[r], dp[l-1]+1);printf("%d\n", dp[n]);return0;}