def maxTrans(A, n): subsum = [0] val = n currSubSum = 0 for i in range(n): currSubSum += val subsum.append(currSubSum) val -= 1 sizeS = n*(n+1)//2 s = [0 for _ in range(sizeS)] done = [False for _ in range(sizeS)] values = sorted(set(A), reverse = True) indexes = dict() for i in range(n): if A[i] in indexes: indexes[A[i]].append(i) else: indexes[A[i]] = [i] for v in values: #print(indexes[v]) for i in indexes[v]: for k in range(n): #print('value '+str(v)+' i '+str(i)+' k '+str(k)) for start in range(max(0, i-(k)), min(i+1, n-k)): pos = subsum[k] + start #print('. pos '+str(pos)) if not done[pos]: #print('pos '+str(pos)+'i '+str(i)+' - val '+str(v)) done[pos] = True s[pos] = v return s, sizeS if __name__ == "__main__": n = int(input().strip()) a = list(map(int, input().strip().split(' '))) maxT, N = maxTrans(a, n) maxT, N = maxTrans(maxT, N) #result = solve(a, n) print(sum(maxT))