#include <bits/stdc++.h>
#include <unordered_map>
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;

const int N = 5e3 + 100;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
// mt19937 rd(time(0));
#define IO std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0)

#define int ll

int f[N][N];
int a[N], b[N];
void qwq() {
	int n;
	cin >> n;
	int sum = 0;
	for (int i = 1; i <= n; ++i) cin >> a[i];
	for (int i = 1; i <= n; ++i) {
		cin >> b[i];
		sum += a[i] * b[i];
	}
	for (int i = 1; i <= n; ++i) f[i][i] = sum;
	int res = sum;
	for (int i = n; i >= 1; --i) {
		for (int j = i + 1; j <= n; ++j) {
			int dif = -a[i] * b[i] - a[j] * b[j] + a[i] * b[j] + a[j] * b[i];
			if (i + 1 == j)
				f[i][j] = sum + dif; 
			else 
				f[i][j] = f[i + 1][j - 1] + dif;
			res = max(res, f[i][j]);
		}
	}
	cout << res;

}

signed main() {
	IO;
	int _ = 1;
	// cin >> _;
	while (_--) qwq();
	return 0;
}
