#!/bin/python import sys def getpos(A): j=0 for i in xrange(0,len(A)): if A[i]<0: j=i+1 else: return j return j def multiply(V,a): prod=0 for i in V: prod+=a*i return prod def largestValue(A): V=[] i=getpos(A) start=i summ=0 sum_=0 cand=-1 fin=0 for i in xrange(i,len(A)): if(cand!=-1): if(A[i]<0): cand=i V.append(A[i]) summ=A[i] sum_=A[i] else: #cand=-1 sum_+=multiply(V,A[i]) if(sum_>summ): cand=-1 summ=0 sum_=0 V=[] if cand==-1: cand=len(A)-1 sum=0 for i in xrange(i,cand): for j in xrange(i+1,cand+1): sum += multiply(V[i:j-1],A[j]) return sum # Return the largest value of any of A's nonempty subarrays. if __name__ == "__main__": n = int(raw_input().strip()) A = map(int, raw_input().strip().split(' ')) result = largestValue(A) print result