#include using namespace std; int gcdoftwo(int a, int b) { if (a == 0 || b == 0) return 0; if (a == b) return a; if (a > b) return gcdoftwo(a-b, b); return gcdoftwo(a, b-a); } long maximumValue(vector a) { // Return the maximum value of f among all subsegments [l..r]. long sum,gcd,max,fun; long maximum; for(int i=0;i max) max=a[j]; if(i == j) sum=a[i]; else sum=a[i]+a[j]; if(gcd1 < 0) gcd1=gcd1+(-(gcd1))+(-(gcd1)); if(gcd2 < 0) gcd1=gcd2+(-(gcd2))+(-(gcd2)); gcd=gcdoftwo(gcd1,gcd2); fun=gcd*(sum-max); // cout<<"i : "< maximum) maximum=fun; } // cout<<" maximum : "<> n; vector a(n); for(int a_i = 0; a_i < n; a_i++){ cin >> a[a_i]; } long result = maximumValue(a); cout << result << endl; return 0; }