import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int length = sc.nextInt(); int[] a = new int[length]; int[] b = new int[length]; int i = 0; while (i < length) { a[i] = sc.nextInt(); i++; } i = 0; while (i < length) { b[i] = sc.nextInt(); i++; } run(a, b);
}
public static void run(int[] a, int[] b) { int size = a.length; int[][] dp = new int[size + 1][size + 1];//dp[i][j]表示取a[i],b[j]时之前的和; for (int x = 0; x < size; x++) { dp[x][x] = a[x] * b[size - 1]; } for (int i = 1; i <= size; i++) //枚举区间长度 { for (int j = 0; j + i < size; j++) //枚举区间起点 { int k = i + j; //区间终点 //当前区间可获得的最大价值 dp[j][k] = Math.max(dp[j + 1][k] + a[j] * b[size - 1 - i], dp[j][k - 1] + a[k] * b[size - 1 - i]);//取左面还是右面 } } System.out.println(dp[0][size - 1]);