import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 以下代码用于获取输入数据
Scanner scan = new Scanner(System.in);
String nStr = scan.nextLine(); // 输入正整数 n
int n = Integer.valueOf(nStr); // 将 String 类型转换为 int 类型
String numsStr = scan.nextLine(); // 输入 n 个整数
String[] numsStrList =
numsStr.split(" "); // 将这 n 个正整数用一个数组进行存储
// 以下代码是 连续子数组的最大和 的具体实现
int pre = Integer.valueOf(
numsStrList[0]); // 定义一个整型变量,用于存放以前一位结尾的数组的连续子数组的最大和
int max = pre; // 定义一个整型变量,用于存放最终的输出结果
for (int i = 2; i <= n; i++) {
if (pre <=
0) { // 如果 pre 小于等于 0,那么我们认为它对我们是没有任何贡献的
pre = Integer.valueOf(numsStrList[i - 1]);
} else { // 如果 pre 大于 0,那么我们认为它对我们是有贡献的
pre = pre + Integer.valueOf(numsStrList[i - 1]);
}
max = Math.max(max, pre); // 取最大值
}
System.out.println(max); // 输出结果
}
}