#!/bin/python import sys def largestValue(A, n): # Return the largest value of any of A's nonempty subarrays. maxArr = [[0, 0]]*n B = A[:] for x in xrange(n-1): B[x+1]+=B[x] ind = 0 for x in xrange(1, n): if ind==0: if maxArr[x][0] <= maxArr[x-1][0]+A[x]*B[x-1]: maxArr[x][0] = maxArr[x-1][0]+A[x]*B[x-1] else: maxArr[x][1] = x ind = x else: if maxArr[x][0] <= maxArr[x-1][0]+A[x]*(B[x-1]-B[ind-1]): maxArr[x][0] = maxArr[x-1][0]+A[x]*(B[x-1]-B[ind-1]) maxArr[x][1] = maxArr[x-1][1] else: maxArr[x][1] = x ind = x res = 0 for x in xrange(n): if maxArr[x][0]>res: res = maxArr[x][0] return res if __name__ == "__main__": n = int(raw_input().strip()) A = map(int, raw_input().strip().split(' ')) result = largestValue(A, n) print result