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 Rust (judge verdict: Accepted)

use std::io::stdin;

fn main() {
    loop {
        let n = read::<usize>();
        if n == 0 {
            return;
        }
        let values: Vec<i32> = (0..n).map(|_| read::<i32>()).collect();
        let mut max_sum = get_sum(&values[0..n]);
        for i in 0..n {
            for j in i + 1..n + 1 {
                let sum = get_sum(&values[i..j]);
                if sum > max_sum {
                    max_sum = sum;
                }
            }
        }
        println!("{}", max_sum);
    }
}

fn get_sum(values: &[i32]) -> i32 {
    values.into_iter().fold(0, |x, sum| x + sum)
}

fn read<T: std::str::FromStr>() -> T {
    let mut s = String::new();
    stdin().read_line(&mut s).ok();
    s.trim().parse().ok().unwrap()
}