#include<stdio.h>
/*
PKU2593给出一串数字使得其中两个子段和最大
*/
void MaxSum(int n,int m,int *a,int *b);
int main(){
int a1[100002],a2[100002],n,b1[100002],b2[100002];
a1[0]=a2[0]=b1[0]=b2[0]=0;
while(scanf("%d",&n),n){
int i;
for(i=1;i<=n;i++){
scanf("%d",&a1[i]);
a2[n+1-i]=a1[i];
}
int max=-0x0ffffff;
MaxSum(1,n,a1,b1);
MaxSum(1,n,a2,b2);
for(int ii=1;ii<n;ii++)
if(max<b1[ii]+b2[n-ii])
max = b1[ii]+b2[n-ii];
printf("%d\n",max);
}
return 0;
}
void MaxSum(int n,int m,int *a,int *b){
int sum = -0x0ffffff,bb=-0x0ffffff;
for(int i=n;i<=m;i++){
if(bb>0)bb+=a[i];
else
bb=a[i];
if(bb>sum)sum=bb;
b[i]=sum;
//printf("%d ",b[i]);
}
//putchar('\n');
}