#include <stdio.h>
#define DTYPE int
#define ASIZE 100001
int main()
{
DTYPE count;
DTYPE values[ASIZE];
DTYPE cache[ASIZE];
DTYPE maximum = -1e9;
scanf("%d", &count);
for (int i = 0; i < count; ++i)
scanf("%d", values + i);
cache[0] = values[0];
for (int i = 1; i < count; ++i)
{
int memNum = cache[i - 1] + values[i];
int viewValue = memNum < values[i] ? values[i] : memNum;
cache[i] = viewValue;
maximum = maximum < viewValue ? viewValue : maximum;
}
printf("%d", maximum);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIERUWVBFIGludAojZGVmaW5lIEFTSVpFIDEwMDAwMQoKaW50IG1haW4oKQp7CglEVFlQRSBjb3VudDsKCURUWVBFIHZhbHVlc1tBU0laRV07CglEVFlQRSBjYWNoZVtBU0laRV07CglEVFlQRSBtYXhpbXVtID0gLTFlOTsKCglzY2FuZigiJWQiLCAmY291bnQpOwoKCWZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKCQlzY2FuZigiJWQiLCB2YWx1ZXMgKyBpKTsKCgljYWNoZVswXSA9IHZhbHVlc1swXTsKCWZvciAoaW50IGkgPSAxOyBpIDwgY291bnQ7ICsraSkKCXsKCQlpbnQgbWVtTnVtID0gY2FjaGVbaSAtIDFdICsgdmFsdWVzW2ldOwoJCWludCB2aWV3VmFsdWUgPSBtZW1OdW0gPCB2YWx1ZXNbaV0gPyB2YWx1ZXNbaV0gOiBtZW1OdW07CgoJCWNhY2hlW2ldID0gdmlld1ZhbHVlOwoKCQltYXhpbXVtID0gbWF4aW11bSA8IHZpZXdWYWx1ZSA/IHZpZXdWYWx1ZSA6IG1heGltdW07Cgl9CgoJcHJpbnRmKCIlZCIsIG1heGltdW0pOwp9