#include <bits/stdc++.h>
#define NMAX 200000
#define int long long
using namespace std;
int n,k,m,q;
vector<int> graph[NMAX];
int a[NMAX];
int b[NMAX];

int spref[NMAX];
int ssuff[NMAX];
#define spref (spref + 1)

int dp[5001][5001];

static void testcase() {
  cin >> n;
  int maxx=0;
  for(int i=0; i<n; i++) {
    cin >>a[i];
  }
  for(int j=0; j<n; j++) {
    cin >> b[j];
  }
  spref[0]=a[0]*b[0];
  for(int i=1; i<n; i++) {
    spref[i]=spref[i-1]+a[i]*b[i];
  }
  ssuff[n-1]=a[n-1]*b[n-1];
  for(int i=n-2; i>=0; i--) {
    ssuff[i]=ssuff[i+1]+a[i]*b[i];
  }
  for(int step=0; step<n; step++) {
    for(int i=0; i<n;i++) {
      int j=i+step;
      if(step==0) {
        dp[i][j]=a[i]*b[i];
      }
      else {
        dp[i][j]=dp[i+1][j-1]+a[i]*b[j]+a[j]*b[i];
      }
    }
  }
  for(int i=0; i<n; i++) {
    for(int j=i; j<n; j++) {
      maxx=max(spref[i-1]+dp[i][j]+ssuff[j+1],maxx);
    }
  }
  cout << maxx << '\n';
  return;
}

signed main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
    testcase();
}

