#include using namespace std; long largestValue(vector A) { // Return the largest value of any of A's nonempty subarrays. long max_so_far = INT_MIN; long ans = 0; long start = 0; long end = 0; for (long i = 0; i < A.size(); i++){ ans += A[i]; if (max_so_far < ans){ max_so_far = ans; end = i; } if (ans < 0){ ans = 0; start = i+1; } } ans = 0; for (long i = start; i <= end; i++){ for (long j = i + 1; j <= end; j++){ ans += A[i]*A[j]; } } return ans; } int main() { int n; cin >> n; vector A(n); for(int A_i = 0; A_i < n; A_i++){ cin >> A[A_i]; } long result = largestValue(A); cout << result << endl; return 0; }