#include using namespace std; const int N = 1005; int sum[N], g[N][N], ma[N][N]; int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } long maximumValue(vector a) { // Return the maximum value of f among all subsegments [l..r]. int n = a.size(); sum[0] = 0; for (int i = 1; i <= n; i++) { sum[i] = sum[i - 1] + a[i - 1]; } for (int i = 1; i <= n; i++) { g[i][i] = abs(a[i - 1]); ma[i][i] = a[i - 1]; } for (int len = 2; len <= n; len++) { for (int i = 1; i + len - 1 <= n; i++) { int j = i + len - 1; g[i][j] = gcd(g[i][j - 1], a[j - 1]); ma[i][j] = max(ma[i][j - 1], a[j - 1]); } } long long res = 1ull << 63; for (int i = 1; i <= n; i++) { for (int j = i; j <= n; j++) { res = max(res, 1ll * g[i][j] * ((sum[j] - sum[i - 1]) - ma[i][j])); } } return res; } 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 = maximumValue(a); cout << result << endl; return 0; }