def max_sum_dp(a: list[int]) -> list[int]: n = len(a) dp = [-INF] * n dp[0] = a[0] for i in range(1, n): dp[i] = max(dp[i-1] + a[i], a[i]) for i in range(1, n): dp[i] = max(dp[i], dp[i-1]) return dp def min_sum_dp(a: list[int]) -> list[int]: n = len(a) dp = [INF] * n dp[0] = a[0] for i in range(1, n): dp[i] = min(dp[i-1] + a[i], a[i]) for i in range(1, n): dp[i] = min(dp[i], dp[i-1]) return dp INF = 1 << 60 N = int(input()) A = list(map(int, input().split())) def solve_max(): ldp = max_sum_dp(A) rdp = max_sum_dp(A[::-1])[::-1] res = -INF for i in range(N-1): x = ldp[i] * rdp[i+1] res = max(res, x) return res def solve_min(): ldp = min_sum_dp(A) rdp = min_sum_dp(A[::-1])[::-1] res = -INF for i in range(N-1): x = ldp[i] * rdp[i+1] res = max(res, x) return res a = solve_max() b = solve_min() print(max(a, b))