#include <bits/stdc++.h>
using namespace std;
int main( )
{
vector< int > h= { 4 ,1 ,1 ,5 ,6 } ;
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+aD17NCwxLDEsNSw2fTsKICAgIGludCBuPWguc2l6ZSgpOwogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PmRwKG4sdmVjdG9yPGludD4oNCwwKSk7CiAgICBkcFswXVsyXT0wOwogICAgZHBbMF1bM109MDsKICAgIGRwWzFdWzJdPWhbMF0raFsxXTsKICAgIGRwWzFdWzNdPTA7CiAgICBkcFsyXVsyXT1oWzFdK2hbMl07CiAgICBkcFsyXVszXT1oWzBdK2hbMV0raFsyXTsKICAgIGludCBtYXhpPTA7CiAgICBmb3IoaW50IGk9MztpPG47aSsrKXsKCiAgICAgICAgaW50IGFucz0wOwogICAgICAgIGZvcihpbnQgaj1pLTM7aj49MDtqLS0pewogICAgICAgICAgICBpZihqPT1pLTMpewogICAgICAgICAgICAgICAgYW5zPW1heChhbnMsZHBbal1bMl0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgIGFucz1tYXgoYW5zLG1heChkcFtqXVsyXSxkcFtqXVszXSkpOwogICAgICAgICAgICB9CiAgICAgICAgfSAgICAgICAgCiAgICAgICAgZHBbaV1bMl09aFtpXStoW2ktMV0rYW5zOwogICAgICAgIGludCBhbnMxPTA7CiAgICAgICAgZm9yKGludCBqPWktNTtqPj0wO2otLSl7CiAgICAgICAgICAgIGFuczE9bWF4KGFuczEsbWF4KGRwW2pdWzJdLGRwW2pdWzNdKSk7CiAgICAgICAgfQogICAgICAgIGRwW2ldWzNdPWhbaV0raFtpLTFdK2hbaS0yXSthbnMxOwogICAgICAgIAogICAgICAgIG1heGk9bWF4KG1heGksbWF4KGRwW2ldWzJdLGRwW2ldWzNdKSk7CiAgICAgICAgCiAgICB9CiAgICAKICAgIC8vY291dDw8bWF4KGRwW24tMV1bMl0sZHBbbi0xXVszXSk7IHRoaXMgaXMgd3JvbmcgYmVjYXVzZSBpdCBpcyBub3QgbmVjZXNzYXJ5IHRoYXQgbGFyZ2VzdCBzdW0gd2lsbCBoYXBwZW4gb25seSB3aGVuIGxhc3Qgcm9iYmVkIGhvdXNlIGlzIG4tMSBpbmRleGVkIG9yIGxhc3QgaHB1c2UuCiAgICAvL2VnIDEsNSw1LDUsMQogICAgY291dDw8bWF4aTw8ZW5kbDsKICAgIHJldHVybiAwOwp9