#include <bits/stdc++.h>
using namespace std;
int main( )
{
vector< int > h= { 12 ,5 ,19 ,7 ,25 ,14 ,3 ,30 ,18 ,9 ,27 ,6 ,21 ,11 ,24 ,8 ,16 ,29 ,4 ,20 } ;
int n= h.size ( ) ;
vector< vector< int >> dp( n,vector< int > ( 4 ,0 ) ) ;
dp[ 0 ] [ 2 ] = 0 ;
dp[ 0 ] [ 3 ] = 0 ;
dp[ 1 ] [ 2 ] = h[ 0 ] + h[ 1 ] ;
dp[ 1 ] [ 3 ] = 0 ;
dp[ 2 ] [ 2 ] = h[ 1 ] + h[ 2 ] ;
dp[ 2 ] [ 3 ] = h[ 0 ] + h[ 1 ] + h[ 2 ] ;
int maxi= 0 ;
for ( int i= 3 ; i< n; i++ ) {
int ans= 0 ;
for ( int j= i- 3 ; j>= 0 ; j-- ) {
if ( j== i- 3 ) {
ans= max( ans,dp[ j] [ 2 ] ) ;
}
else {
ans= max( ans,max( dp[ j] [ 2 ] ,dp[ j] [ 3 ] ) ) ;
}
}
dp[ i] [ 2 ] = h[ i] + h[ i- 1 ] + ans;
int ans1= 0 ;
for ( int j= i- 5 ; j>= 0 ; j-- ) {
ans1= max( ans1,max( dp[ j] [ 2 ] ,dp[ j] [ 3 ] ) ) ;
}
dp[ i] [ 3 ] = h[ i] + h[ i- 1 ] + h[ i- 2 ] + ans1;
maxi= max( maxi,max( dp[ i] [ 2 ] ,dp[ i] [ 3 ] ) ) ;
}
//cout<<max(dp[n-1][2],dp[n-1][3]); this is wrong because it is not necessary that largest sum will happen only when last robbed house is n-1 indexed or last hpuse.
//eg 1,5,5,5,1
cout << maxi<< endl;
return 0 ;
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CiAgICAKICAgIHZlY3RvcjxpbnQ+aD17MTIsNSwxOSw3LDI1LDE0LDMsMzAsMTgsOSwyNyw2LDIxLDExLDI0LDgsMTYsMjksNCwyMH07CiAgICBpbnQgbj1oLnNpemUoKTsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj5kcChuLHZlY3RvcjxpbnQ+KDQsMCkpOwogICAgZHBbMF1bMl09MDsKICAgIGRwWzBdWzNdPTA7CiAgICBkcFsxXVsyXT1oWzBdK2hbMV07CiAgICBkcFsxXVszXT0wOwogICAgZHBbMl1bMl09aFsxXStoWzJdOwogICAgZHBbMl1bM109aFswXStoWzFdK2hbMl07CiAgICBpbnQgbWF4aT0wOwogICAgZm9yKGludCBpPTM7aTxuO2krKyl7CgogICAgICAgIGludCBhbnM9MDsKICAgICAgICBmb3IoaW50IGo9aS0zO2o+PTA7ai0tKXsKICAgICAgICAgICAgaWYoaj09aS0zKXsKICAgICAgICAgICAgICAgIGFucz1tYXgoYW5zLGRwW2pdWzJdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICBhbnM9bWF4KGFucyxtYXgoZHBbal1bMl0sZHBbal1bM10pKTsKICAgICAgICAgICAgfQogICAgICAgIH0gICAgICAgIAogICAgICAgIGRwW2ldWzJdPWhbaV0raFtpLTFdK2FuczsKICAgICAgICBpbnQgYW5zMT0wOwogICAgICAgIGZvcihpbnQgaj1pLTU7aj49MDtqLS0pewogICAgICAgICAgICBhbnMxPW1heChhbnMxLG1heChkcFtqXVsyXSxkcFtqXVszXSkpOwogICAgICAgIH0KICAgICAgICBkcFtpXVszXT1oW2ldK2hbaS0xXStoW2ktMl0rYW5zMTsKICAgICAgICAKICAgICAgICBtYXhpPW1heChtYXhpLG1heChkcFtpXVsyXSxkcFtpXVszXSkpOwogICAgICAgIAogICAgfQogICAgCiAgICAvL2NvdXQ8PG1heChkcFtuLTFdWzJdLGRwW24tMV1bM10pOyB0aGlzIGlzIHdyb25nIGJlY2F1c2UgaXQgaXMgbm90IG5lY2Vzc2FyeSB0aGF0IGxhcmdlc3Qgc3VtIHdpbGwgaGFwcGVuIG9ubHkgd2hlbiBsYXN0IHJvYmJlZCBob3VzZSBpcyBuLTEgaW5kZXhlZCBvciBsYXN0IGhwdXNlLgogICAgLy9lZyAxLDUsNSw1LDEKICAgIGNvdXQ8PG1heGk8PGVuZGw7CiAgICByZXR1cm4gMDsKfQ==