#include <vector>
#include <numeric>
#include <iostream>

bool Positive(int x)
{
	return x>=0;
}

int CalcMax( const std::vector<int>& v )
{
	int max = 5000*(-100000)-1;//考えられる最小値

	for( int i0=0 ; i0<v.size(); ++i0 )
	{
		for( int i1 = v.size()-1; i0<=i1; --i1 )
		{
			int sum = std::accumulate( v.begin()+i0, v.begin()+i1+1, 0 );
			if( max < sum )
			{
				max = sum;
			}
		}
	}
	return max;
}

int main()
{
	int n;
	while( std::cin >> n, n )
	{
		std::vector<int> v;
		for( int i=0; i<n; ++i )
		{
			int a;
			std::cin >> a;
			if(i==0)
			{
				v.push_back(a);
				continue;
			}

			if( Positive(v[v.size()-1]) == Positive(a) )
			{
				v[v.size()-1] += a;
			}
			else
			{
				v.push_back(a);
			}
		}

		std::cout << CalcMax(v) << '\n';
	}
}