#include using namespace std; #define FOR(i,a,b) for (int i = (a); i <= (b); i++) #define FORD(i,a,b) for (int i = (a); i >= (b); i--) #define REP(i,b) for (int i = 0; i < (b); i++) const int N = 5000; int d[N]; int dp[N+1][N+1]; int main() { int n; while (scanf("%d", &n) == 1) { REP(i, n) scanf("%d", &d[i]); FOR(len, 2, n) { for (int beg = 0; beg + len - 1 < n; beg++) { dp[len][beg] = max(dp[len-1][beg], dp[len-1][beg+1]); if (len > 2 && d[beg] == d[beg+len-1]) { dp[len][beg] = max(dp[len][beg], dp[len-2][beg+1] + 1); } } } printf("%d\n", dp[n][0]); } return 0; }