#include //#include using namespace std; //using namespace atcoder; using lli=long long int; using vl=vector; #define rep(i,s,e) for(lli i=s;i=e;i--) #define vecl(v,s) vl v(s); rep(i,0,s) cin >> v.at(i); using pll=pair; #define mp(f,s) make_pair(f,s) #define fi first #define se second using vpll=vector; #define vecpll(v,s) vpll v(s); rep(i,0,s) cin >> v.at(i).fi >> v.at(i).se; #define print(s) cout << s << endl; const lli LL_INF=1ll<<60; int main() { int n; cin >> n; vecl(a,n); // l...[1,i] r...[i,N] // {max,min} vpll l(n+1),r(n+2); l[0]=mp(-LL_INF,LL_INF); l[1]=mp(a[0],a[0]); lli csum=a[0],cmin=min(a[0],0ll),cmax=max(a[0],0ll); rep(i,2,n+1){ csum+=a[i-1]; cmin=min(cmin,csum); cmax=max(cmax,csum); l[i]=mp(max(l[i-1].fi,csum-cmin),min(l[i-1].se,csum-cmax)); } r[n+1]=mp(-LL_INF,LL_INF); r[n]=mp(a[n-1],a[n-1]); csum=a[n-1],cmin=min(a[n-1],0ll),cmax=max(a[n-1],0ll); rrep(i,n,1){ csum+=a[i-1]; cmin=min(cmin,csum); cmax=max(cmax,csum); r[i]=mp(max(r[i+1].fi,csum-cmin),min(r[i+1].se,csum-cmax)); } lli ans=-LL_INF; rep(i,1,n){ ans=max(ans,max(l[i].fi*r[i+1].fi,l[i].se*r[i+1].se)); } print(ans); }