#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef string st;
#define ff first
#define sc second
#define pb push_back
#define gcd(x,y) __gcd(x,y)
#define lcm(x,y) (x*y)/gcd(x,y)
#define mx(m) *max_element(m.begin(),m.end())
#define mn(m) *min_element(m.begin(),m.end())
#define fr(i,n) for(ll i=0;i<n;i++)
#define rfr(i,n) for(ll i=n-1;i>=0;i--)
#define cng(r) (r? 0:1)
#define cmp compare
#define elif else if
#define minv(x,y) (x<y? x:y)
#define vctr vector<ll>
#define srt(a) sort(a.begin(),a.end())
#define rsrt(a) sort(a.rbegin(),a.rend())
#define sum(a) accumulate(a.begin(),a.end(),0)
#define chk(a,x) find(a.begin(),a.end(),x)!=a.end()
ll pw(ll n,ll p){return p>=n? p:pw(n,2*p);}
//const ll N=500*10000+13;
//ll p[N];
ll mod=1000000007;

ll powermod(ll x,ll y,ll m){
  ll res=1;
  while(y>0){
    if(y&1){
      res=(res*x)%m;
    }
    y>>=1;
    x=(x*x)%m;
  }
  return res;
}


int main(){
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);cout.tie(NULL);
  ll n,a[5005],b[5005];
  cin>>n;
  fr(i,n){
    cin>>a[i];
  }
  fr(i,n){
    cin>>b[i];
  }
  vctr p{0};
  fr(i,n){
    p.pb(a[i]*b[i]+p[i]);
  }
  ll ans=p[n];
  fr(c,n){
    ll x=a[c]*b[c];
    for(ll l=c-1,r=c+1;l>=0 && r<n;--l,++r){
      x+=a[l]*b[r]+a[r]*b[l];
      ans=max(ans,x+p[l]+(p[n]-p[r+1]));
    }
    x=0;
    for(ll l=c,r=c+1;l>=0 && r<n;--l,++r){
      x+=a[l]*b[r]+a[r]*b[l];
      ans=max(ans,x+p[l]+(p[n]-p[r+1]));
    }
  }
  cout<<ans;
}