import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); String[] sa = br.readLine().split(" "); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = Integer.parseInt(sa[i]); } br.close(); long[] maxL = new long[n]; long val = a[0]; maxL[0] = val; for (int i = 1; i < n; i++) { if (val < 0) { val = 0; } val += a[i]; maxL[i] = Math.max(maxL[i - 1], val); } long[] minL = new long[n]; val = a[0]; minL[0] = val; for (int i = 1; i < n; i++) { if (val > 0) { val = 0; } val += a[i]; minL[i] = Math.min(minL[i - 1], val); } long[] maxR = new long[n]; val = a[n - 1]; maxR[n - 1] = val; for (int i = n - 2; i >= 0; i--) { if (val < 0) { val = 0; } val += a[i]; maxR[i] = Math.max(maxR[i + 1], val); } long[] minR = new long[n]; val = a[n - 1]; minR[n - 1] = val; for (int i = n - 2; i >= 0; i--) { if (val > 0) { val = 0; } val += a[i]; minR[i] = Math.min(minR[i + 1], val); } long ans = Long.MIN_VALUE; for (int i = 1; i < n; i++) { long v1 = maxL[i - 1]; long v2 = maxR[i]; long v3 = v1 * v2; ans = Math.max(ans, v3); v1 = minL[i - 1]; v2 = minR[i]; v3 = v1 * v2; ans = Math.max(ans, v3); v1 = maxL[i - 1]; v2 = minR[i]; v3 = v1 * v2; ans = Math.max(ans, v3); v1 = minL[i - 1]; v2 = maxR[i]; v3 = v1 * v2; ans = Math.max(ans, v3); } System.out.println(ans); } }