Problem:
Maximum Sum Sequence

Given a sequence of numbers a1, a2, a3, ..., an, find the maximum sum of a contiguous subsequence of those numbers. Note that, a subsequence of one element is also a contiquous subsequence.

Input

The input consists of multiple datasets. Each data set consists of:

n
a1
a2
.
.
an

You can assume that 1 ≤ n ≤ 5000 and -100000 ≤ ai ≤ 100000.

The input end with a line consisting of a single 0.

Output

For each dataset, print the maximum sum in a line.

Sample Input

7
-5
-1
6
4
9
-6
-7
13
1
2
3
2
-2
-1
1
2
3
2
1
-2
1
3
1000
-200
201
0

Output for the Sample Input

19
14
1001

Solution in Haskell (judge verdict: Memory Limit Exceeded)

import Control.Applicative

import Control.Monad
    (replicateM)
    
import Data.List
    (intercalate)
    
type Set = (Int, [Int])

type Problem = [Set]

type Result = [Int]

findMax :: Set -> Int

findMax (n, list)
    = maximum $ map sum subs where
        subs = concat [[take y $ drop x list | y <- [1..(n - x)]] | x <- [0..(n - 1)]]
        
solve :: Problem -> Result

solve sets
    = map findMax sets
    
output :: Result -> String

output result
    = intercalate "\n" $ map show result
    
input :: IO Problem

input
    = inputSets []
    
inputSets :: Problem -> IO Problem

inputSets sets
    = do
        n <- read <$> getLine
        if n == 0
            then return sets
            else do
                list <- replicateM n $ read <$> getLine
                inputSets $ sets ++ [(n, list)]
                
main :: IO ()

main
    = putStr.output =<< solve <$> input