const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
//读取数组的元素个数
let n = parseInt(await readline());
let line = await readline()
//拆分读取的字符串为数组
let nums = line.split(' ');
let currentMax = 0, max = -Infinity; //currentMax表示目前该子数组的和 max表示结果
for(let i = 0; i < n; i++) {
currentMax += parseInt(nums[i]);
max = Math.max(max, currentMax);
//如果currentMax和小于0 则立马重置开始下一段子数组的求和
if(currentMax < 0) currentMax = 0;
}
console.log(max)
}()