对区间动态规划。
n = int(input())
aa = list(map(int, input().split()))
bb = list(map(int, input().split()))[::-1]
# dp[i][j]是这一族问题中输入为aa[i:j+1]和bb[i:j+1]时的解。
dp = [[0 for j in range(n)] for i in range(n)]
# 初始化:最小的子问题就是n=1的情况,总共只有一种可能。
for idx in range(n):
dp[idx][idx] = aa[idx] * bb[0]
# 动态规划:只有两种可能,要么当前区间的左端点是新取的点,要么当前区间的右端点是新取的点
for i in range(n)[::-1]:
for j in range(i+1,n):
dp[i][j] = max(dp[i][j-1]+bb[j-i]*aa[j], dp[i+1][j]+bb[j-i]*aa[i])
print(dp[0][-1])