n = int(input()) a = [int(x) for x in input().split()] assert 2 <= n <= 2 * 10 ** 5 for x in a: assert - 10 ** 4 <= x <= 10 ** 4 from collections import defaultdict inf = 10 ** 18 # 区間[0:l]の連続部分列としてあり得るmax def calc(a): res = [-inf]*n mi = 0 s = 0 for i in range(n): s += a[i] res[i] = s - mi mi = min(mi, s) for i in range(n-1): res[i+1] = max(res[i+1], res[i]) return res def solve(a): l = calc(a) r = calc(a[::-1])[::-1] ans = -inf for i in range(n-1): tmp = l[i] * r[i+1] ans = max(ans, tmp) return ans print(max(solve(a), solve([-i for i in a])))