#include <iostream>
using namespace std;
long int m, now, n, p, i, ch;
int main(void)
{
cin >> n;//입력 받을 수는 n개
for (i = 0; i < n; i++)
{
cin >> p;//i+1번째 수를 입력받음
if (i == 0)//첫 수일 경우
{
m = p;//최댓값은 p
now = p;//현재 합 값도 p
continue;
}
if (ch == 1 && p + now > 0)//한 번이라도 양수가 나온 적이 있으며, 현재 수를 더했을 때 양수가 된다면
now += p;//현재 합 값은 p를 추가한 값
else
{
now = p;//이외에는 p를 현재 합 값으로
if (ch == 0 && now > 0)
ch = 1;//현재 합이 0 이상이라는 것은 양수가 한 번이라도 나왔다는 뜻. ch가 0이면 나온 적이 없다는 뜻
}
m = (m > now ? m : now) > p ? (m > now ? m : now) : p;//이전 now 값이 음수여서 p 값이 현 최댓값일 수 있음.
}
cout << m << endl;//최댓값 출력
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpsb25nIGludCBtLCBub3csIG4sIHAsIGksIGNoOwppbnQgbWFpbih2b2lkKQp7CgljaW4gPj4gbjsvL+yeheugpSDrsJvsnYQg7IiY64qUIG7qsJwKCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCgl7CgkJY2luID4+IHA7Ly9pKzHrsojsp7gg7IiY66W8IOyeheugpeuwm+ydjAoJCWlmIChpID09IDApLy/ssqsg7IiY7J28IOqyveyasAoJCXsKCQkJbSA9IHA7Ly/stZzrjJPqsJLsnYAgcAoJCQlub3cgPSBwOy8v7ZiE7J6sIO2VqSDqsJLrj4QgcAogICAgICAgICAgICBjb250aW51ZTsKCQl9CgkJaWYgKGNoID09IDEgJiYgcCArIG5vdyA+IDApLy/tlZwg67KI7J20652864+EIOyWkeyImOqwgCDrgpjsmKgg7KCB7J20IOyeiOycvOupsCwg7ZiE7J6sIOyImOulvCDrjZTtlojsnYQg65WMIOyWkeyImOqwgCDrkJzri6TrqbQKCQkJbm93ICs9IHA7Ly/tmITsnqwg7ZWpIOqwkuydgCBw66W8IOy2lOqwgO2VnCDqsJIKCQllbHNlCgkJewoJCQlub3cgPSBwOy8v7J207Jm47JeQ64qUIHDrpbwg7ZiE7J6sIO2VqSDqsJLsnLzroZwKCQkJaWYgKGNoID09IDAgJiYgbm93ID4gMCkKCQkJCWNoID0gMTsvL+2YhOyerCDtlansnbQgMCDsnbTsg4HsnbTrnbzripQg6rKD7J2AIOyWkeyImOqwgCDtlZwg67KI7J20652864+EIOuCmOyZlOuLpOuKlCDrnLsuIGNo6rCAIDDsnbTrqbQg64KY7JioIOyggeydtCDsl4bri6TripQg65y7CgkJfQoJCW0gPSAobSA+IG5vdyA/IG0gOiBub3cpID4gcCA/IChtID4gbm93ID8gbSA6IG5vdykgOiBwOy8v7J207KCEIG5vdyDqsJLsnbQg7J2M7IiY7Jes7IScIHAg6rCS7J20IO2YhCDstZzrjJPqsJLsnbwg7IiYIOyeiOydjC4KCX0KCWNvdXQgPDwgbSA8PCBlbmRsOy8v7LWc64yT6rCSIOy2nOugpQoJcmV0dXJuIDA7Cn0=