#include typedef long long ll; typedef long double ld; using namespace std; #define rep(i, a, n) for (int i = (a); i < (n); i++) #define per(i, a, n) for (int i = (n) - 1; i >= (a); i--) const int N = 5010; int dp[N][N]; int main(void) { ios::sync_with_stdio(false); int n; while(cin>>n) { memset(dp, 0, sizeof(dp)); vector a(n); rep(i,0,n) cin >> a[i]; rep(to,0,n) { per(from,0,to) { dp[from][to] = max(dp[from][to], dp[from][to-1]); dp[from][to] = max(dp[from][to], dp[from+1][to]); if (a[to] == a[from]) { dp[from][to] = max(dp[from][to], dp[from+1][to-1] + 1); } } } cout << dp[0][n-1] << endl; } return 0; }