import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.util.InputMismatchException; public class Q3 { public static void main(String[] args) throws Exception { Scan scn = new Scan(); Print printer = new Print(); int n = scn.scanInt(); int[] arr = new int[n]; for (int i = 0; i < arr.length; i++) { arr[i] = scn.scanInt(); } maxSubArraySum(arr, n); printer.close(); } public static void maxSubArraySum(int a[], int size) { int max_so_far = Integer.MIN_VALUE, max_ending_here = 0, start = 0, end = 0, s = 0; for (int i = 0; i < size; i++) { max_ending_here += a[i]; if (max_so_far < max_ending_here) { max_so_far = max_ending_here; start = s; end = i; } if (max_ending_here < 0) { max_ending_here = 0; s = i + 1; } } // System.out.println("Maximum contiguous sum is " + max_so_far); // System.out.println("Starting index " + start); // System.out.println("Ending index " + end); int[] sum = new int[a.length]; int ts = 0; for (int i = end; i >= start; i--) { sum[i] = ts; ts += a[i]; } long ans = 0; for (int i = start; i <= end; i++) { ans += a[i] * sum[i]; } System.out.println(ans); } static class Scan { private InputStream in; private byte[] buf = new byte[1024 * 1024]; private int index; private int total; public Scan() { in = System.in; // try { // in = new FileInputStream(new File("/home/ujjwal/test/test")); // } catch (Exception ex) { // // } } public int scan() throws IOException { if (total < 0) throw new InputMismatchException(); if (index >= total) { index = 0; total = in.read(buf); if (total <= 0) return -1; } return buf[index++]; } public int scanInt() throws IOException { int integer = 0; int n = scan(); while (isWhiteSpace(n)) n = scan(); int neg = 1; if (n == '-') { neg = -1; n = scan(); } while (!isWhiteSpace(n)) { if (n >= '0' && n <= '9') { integer *= 10; integer += n - '0'; n = scan(); } else throw new InputMismatchException(); } return neg * integer; } public long scanLong() throws IOException { long integer = 0; int n = scan(); while (isWhiteSpace(n)) n = scan(); int neg = 1; if (n == '-') { neg = -1; n = scan(); } while (!isWhiteSpace(n)) { if (n >= '0' && n <= '9') { integer *= 10; integer += n - '0'; n = scan(); } else throw new InputMismatchException(); } return neg * integer; } public double scanDouble() throws IOException { double doub = 0; int n = scan(); while (isWhiteSpace(n)) n = scan(); int neg = 1; if (n == '-') { neg = -1; n = scan(); } while (!isWhiteSpace(n) && n != '.') { if (n >= '0' && n <= '9') { doub *= 10; doub += n - '0'; n = scan(); } else throw new InputMismatchException(); } if (n == '.') { n = scan(); double temp = 1; while (!isWhiteSpace(n)) { if (n >= '0' && n <= '9') { temp /= 10; doub += (n - '0') * temp; n = scan(); } else throw new InputMismatchException(); } } return doub * neg; } public String scanString() throws IOException { StringBuilder sb = new StringBuilder(); int n = scan(); while (isWhiteSpace(n)) n = scan(); while (!isWhiteSpace(n)) { sb.append((char) n); n = scan(); } return sb.toString(); } private boolean isWhiteSpace(int n) { if (n == ' ' || n == '\n' || n == '\r' || n == '\t' || n == -1) return true; return false; } } static class Print { private final BufferedWriter bw; public Print() { bw = new BufferedWriter(new OutputStreamWriter(System.out)); } public void print(String str) throws IOException { bw.append(str); } public void printLine(String str) throws IOException { print(str); bw.append("\n"); } public void close() throws IOException { bw.close(); } } }