#include <bits/stdc++.h>


using namespace std;


typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi > vvi;
typedef pair<ll,ll> ii;
typedef vector <ii> vii;
#define REP(i,a,b)\
for (ll i=a; i<b; i++)

#define fastIO  ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
/*ll toint(const string &s) { stringstream ss; ss << s; ll x; ss >> x; return x; }
string tostring ( ll number ){  stringstream ss; ss<< number; return ss.str();}*/



int main()
{
	fastIO;
    ll n;
	cin>>n;
	vi A(n);
	vi B(n);
	REP(i,0,n)
		cin>>A[i];
	REP(j,0,n)
		cin>>B[j];
	
	vi SumNormal(n+1,0);
	SumNormal[0]=0;
	REP(i,0,n)
		SumNormal[i+1]=SumNormal[i]+A[i]*B[i];
	

	ll allSum=SumNormal[n];
	ll bestSum=allSum;

	vvi M(n,vi(n,0));

	REP(i,0,n)
	{
		M[i][i]=A[i]*B[i];
	}

	 REP(len,1,n)
    {
        REP(j,0,n-len)
        {
            ll from=j;
            ll to=j+len;
			//cout<<from<<" "<<to<<" "<<M[from+1][to-1]<<" "<<A[to]*B[from]<<" "<<A[from]*B[to]<<endl;
           	M[from][to]=M[from+1][to-1]+A[to]*B[from]+A[from]*B[to];
        }
    }

/*	REP(i,0,n)
	{
		REP(j,0,n)
			cout<<M[i][j]<<" ";
		cout<<endl;
	}

	cout<<endl;*/
	REP(eleje,1,n)
		REP(vege,eleje+1,n+1)
		{
			ll Abol = allSum-SumNormal[vege]+SumNormal[eleje-1];
			ll Bbol = M[eleje-1][vege-1];
			//cout<<eleje<<" "<<vege<<" "<<Abol<<" "<<Bbol<<endl;
			if (Abol+Bbol>bestSum)
			{
				bestSum= Abol+Bbol;
				//cout<<eleje<<" "<<vege<<endl;
			}
		}
	cout<<bestSum<<endl;
}
