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 = 0max = -Infinity//currentMax表示目前该子数组的和 max表示结果
    for(let i = 0i < ni++) {
        currentMax += parseInt(nums[i]);
        max = Math.max(maxcurrentMax);
        //如果currentMax和小于0 则立马重置开始下一段子数组的求和
        if(currentMax < 0currentMax = 0;
    }
    console.log(max)
}()