大佬求调
#include<bits/stdc++.h>
using namespace std;
#define int long long
int const N=110000;
int n,a[N];
int dfs(int l,int r){
if(l==r)return a[l];
int mid=(l+r)>>1;
int lsum=dfs(l,mid);
int rsum=dfs(mid+1,r);
int lgcd1=a[mid],lgcd2=a[mid],s1=a[mid],lw=mid;
for(int i=mid-1;i>=l;i--){
lgcd1=__gcd(lgcd1,a[i]);
if(s1<lgcd1*(mid-i+1)){
s1=lgcd1*(mid-i+1);
lgcd2=lgcd1;
lw=i;
}
}int rgcd1=a[mid+1],rgcd2=a[mid+1],s2=a[mid+1],rw=mid+1;
for(int i=mid+2;i<=r;i++){
rgcd1=__gcd(rgcd1,a[i]);
if(s2<rgcd1*(i-mid)){
s2=rgcd1*(i-mid);
rgcd2=rgcd1;
rw=i;
}
}
return max(max(lsum,rsum),__gcd(rgcd2,lgcd2)*(rw-lw+1));
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
cout<<dfs(1,n);
return 0;
}