N = int(input()) A = list(map(int, input().split())) if N == 2: print(A[0] * A[1]) exit() def contiguous_max(arr): ans = [0] * (len(arr) + 1) s, m = 0, 0 for i in range(len(arr)): s += arr[i] m = min(m, s) ans[i + 1] = max(ans[i], s - m) return ans def contiguous_min(arr): ans = [0] * (len(arr) + 1) s, m = 0, 0 for i in range(len(arr)): s += arr[i] m = max(m, s) ans[i + 1] = min(ans[i], s - m) return ans left_max = contiguous_max(A) right_max = contiguous_max(A[::-1])[::-1] left_min = contiguous_min(A) right_min = contiguous_min(A[::-1])[::-1] ans = 0 for i in range(N): ans = max(ans, left_max[i] * right_max[i], left_min[i] * right_min[i]) print(ans)