#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<numeric>
#include<map>
using namespace std;

#define R(i,s,n) for(int i=s;i<n;i++)
#define D(i,n,s) for(int i=n-1;i>=s;i--)
typedef pair<int,int> P;

const int MAX_N = 3e+2;
const int MAX_W = 1e+3;

int N,W[MAX_N];
int dp[MAX_N][MAX_N];

void solve();

int main() {

  while(cin>>N && N) {
    R(i,0,N) cin>>W[i];
    solve();
  }

  return 0;
}

void solve() {
  memset(dp,0,sizeof(dp));

  //幅ループ
  R(i,1,N){

    //縦軸
    for(int j=0; j+i<N; j++){
      int mx=0;

      //切るとこ
      for(int k=0; k<i; k++){
        //j~j+k,j+k+1~j+i
        mx=max(mx,dp[j][j+k]+dp[j+k+1][j+i]);
      }
      if(i-1 == dp[j+1][j+i-1] && abs(W[j]-W[j+i]) <= 1){
          mx = i+1;
      }
      dp[j][j+i]=mx;
    }
  }

  cout << dp[0][N-1] << endl;
}

