#include using namespace std; #define FOR(i,a,b) for(auto i=a;i; using vvi=vector; using pii=pair; #define MX 5007 ll n; ll v[MX]; ll nx[MX]; ll DP[MX][MX]; ll dp(ll a, ll b) { ll &ret=DP[a][b]; if(~ret)return ret; ret=0; FOR(i,a,b-1) { if(~nx[i] && nx[i]<=b) ret=max(ret, dp(i+1,nx[i]-1)+1); } // dout<>n; if(!cin)break; F(n) cin>>v[i]; memset(nx,-1,sizeof(nx)); memset(DP,-1,sizeof(DP)); F(n) FOR(j,i+1,n) if(v[j]==v[i]) nx[i]=j; cout << dp(0,n-1) <