#!/bin/python3 import sys import itertools def maximumValue(a): # Return the maximum value of f among all subsegments [l..r] maxScore = 0 for i in range(len(a)+1): for j in range(i+1, len(a)+1): subList = a[i : j] if (len(subList) == 1): gcdBig = subList[0] else: subListAbs = [abs(i) for i in subList] subListAbs.sort() gcdBig = gcd(subListAbs[0], subListAbs[1]) newScore = gcdBig * (sum(subList) - max(subList)) # print(gcdBig, sum(subList), max(subList)) if (newScore > maxScore): maxScore = newScore return maxScore def gcd(a, b): if (a == 0): return b if (b == 0): return a a = abs(a) b = abs(b) while b: a, b, = b, a%b return a if __name__ == "__main__": n = int(input().strip()) a = list(map(int, input().strip().split(' '))) result = maximumValue(a) print(result)