#include <bits/stdc++.h>

using namespace std;
typedef long long int ll ; 
ll dp[100000+5][5][5];

ll mxi(ll x,ll y,ll z){
    
    
    return max(x,max(y,z));
    
}

ll mx(ll x,ll y,ll z,ll g){
    
    return max(max(x,g),max(y,z));
}

int main() {
    
    ll n=50;
    vector<ll>b={17, -3, 25, -11, 8, -19, 13, -7, 22, -5, 9, -14, 6, -18, 20, -2, 11, -9, 4, -16,
     15, -6, 23, -12, 7, -20, 18, -1, 10, -13, 5, -17, 21, -4, 14, -8, 3, -15, 19, -10,
     2, -21, 16, -22, 24, -23, 1, -24, 12, -25};
    vector<ll>d={-10, 21, -5, 14, -18, 6, -12, 25, -3, 9, -7, 20, -2, 11, -16, 4, -13, 22, -8, 5,
     -19, 7, -1, 18, -6, 23, -4, 15, -11, 2, -20, 8, -9, 17, -14, 3, -21, 10, -15, 24,
     -22, 12, -17, 1, -23, 13, -24, 16, -25, 19};
    

    //base-cases
    dp[1][1][1] = b[1] ; 
    dp[1][1][2] = b[1] ; 
    dp[1][2][1] = d[1] ; 
    dp[1][2][2] = d[1] ; 
    
    
    //dp[index][][]
    
    
   int i = 2 ; 
    while(i<=n){
        
        dp[i][1][1] = b[i] + b[i-1] + max(dp[i-2][2][2],dp[i-2][2][1]);
        dp[i][1][2] = b[i] + d[i-1] + mxi(dp[i-2][1][1],dp[i-2][1][2],dp[i-2][2][1]);
        dp[i][2][1] = d[i] + b[i-1] + mxi(dp[i-2][2][1],dp[i-2][2][2],dp[i-2][1][2]);
        dp[i][2][2] = d[i] + d[i-1] + max(dp[i-2][1][2],dp[i-2][1][1]);
        
        i++;
    }
    
    cout<<mx(dp[n][1][1],dp[n][1][2],dp[n][2][2],dp[n][2][1]); 
    
    
    
    
    
    return 0 ; 
}