//Copyright © 2017 Snehil Santhalia #include using namespace std; typedef long long ll; typedef long double ld; typedef vector vi; typedef vector vvi; typedef pair ii; typedef vector vii; typedef vector vvii; #define INF 1e18 #define loop(i,a,b) for(ll i=(ll)a;i<=(ll)b;i++) #define forit(i, a) for ( __typeof( (a).begin() ) i = (a).begin(); i != (a).end(); i++ ) #define mem(a, v) memset(a, v, sizeof a) #define pb push_back #define mp make_pair #define MOD 1000000007 #define MAX(a,b) (((a)>(b))?(a):(b)) #define MIN(a,b) (((a)<(b))?(a):(b)) #define left(x) x<<1 #define right(x) (x<<1)|1 #define PI acos(-1.0) #define EPS 1e-9 ll T = 1, N; ll a[100505], sum[100005], ans; ii tree[2000005]; void build(ll n, ll s, ll e){ if(s==e) tree[n].first = tree[n].second = a[s]; else { ll mid=(s+e)/2; build(left(n), s, mid); build(right(n), mid+1, e); tree[n].first=MAX(tree[left(n)].first, tree[right(n)].first); tree[n].second=__gcd(tree[left(n)].second, tree[right(n)].second); } } ii query(ll n, ll s, ll e, ll l, ll r){ if(r> N; loop(i,1,N) { cin >> a[i]; sum[i] = sum[i-1]+a[i]; } build(1,1,N); loop(i,1,N) { loop(j,i,N) { ii temp = query(1,1,N,i,j); ans = MAX(ans, (sum[j]-sum[i-1]-temp.first)*temp.second); } } cout << ans << endl; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); //cin>>T; while(T--){ solve(); } return 0; }