#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>
using namespace std;
const int N = 100 + 10;
int S[N], A[N], d[N][N], vis[N][N], n;
int dp(int i, int j){
if( vis[i][j] ) return d[i][j]; vis[i][j]=1; int m=0; for ( int k=i+1; k<=j; k++ ) m=min( m, dp(k,j) ); for ( int k=i; k<j; k++ ) m=min( m, dp(i,k) ); d[i][j]=S[j]-S[i-1]-m; return d[i][j];
}
int main(){
while( scanf("%d", &n)==1 && n ){ S[0]=0; for ( int i=1; i<=n; i++ ) scanf("%d", &A[i] ), S[i]=S[i-1]+A[i]; memset(vis,0,sizeof(vis)); dp(1,n); printf("%d\n", 2*d[1][n]-S[n] ); } return 0;
}
f[i][j]=min(dp[i[j],f[i+1][j])
g[i][j]=min(dp[i][j],f[i][j-1])
d[i][j]=sum(i,j)-min(f[i+1][j],g[i][j-1],0)
#include <cstdio>#include <iostream>#include <cstring>
using namespace std;
const int N = 110;
int S[N], A[N], d[N][N], f[N][N], g[N][N];
int main(){
int n; while( scanf("%d", &n )==1 && n ){ S[0]=0; for ( int i=1; i<=n; i++ ) scanf("%d", &A[i] ), S[i]=S[i-1]+A[i]; for ( int i=1; i<=n; i++ ) d[i][i]=f[i][i]=g[i][i]=A[i]; for ( int L=1; L<n; L++ ) for ( int i=1; i+L<=n; i++ ){ int j=i+L; int m=0; m=min(m, f[i+1][j]); m=min(m, g[i][j-1]); d[i][j]=S[j]-S[i-1]-m; f[i][j]=min(d[i][j], f[i+1][j]); g[i][j]=min(d[i][j], g[i][j-1]); } printf("%d\n", 2*d[1][n]-S[n] ); } return 0;
}