//include #include #include #include #include #include #define ll long long using namespace std; int n,m, ans; char c; vector> sous; vector> tab; vector in; //vector last; int main() { //ios::sync_with_stdio(false); //cout << setprecision(10); while(scanf("%d",&n) != -1) { //init sous = vector>(10001, vector()); tab = vector>(n+2, vector(n+2)); in = vector(n); //last = vector(n,-1); //scanf("%d", &m); for(int i = 0; i < n; i++) { int d; scanf("%d", &d); in[i] = d; sous[d].push_back(i); } //alg for(int i = 0;i <= n; i++) { tab[0][i] = 0; } for(int i = 1;i <= n; i++) { tab[i][n] = 0; for(int j = n-1; j >= i; j--) { int m = max(tab[i][j+1], tab[i-1][j]); if (in[i-1] == in[j]) m = max(m, tab[i-1][j+1]+1); tab[i][j] = m; //printf("%d\n", m); } } int best = 0; for(int i = 0;i <= n; i++) { best = max(best, tab[i][i]); } printf("%d\n", best); } return 0; }