#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
#define rep(i,a,b) for(int i=a; i<=b;i++)
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin>>n;
    vi a(n+1), b(n+1), prefiksXor(n+1,0);
    rep(i,1,n){
        cin >> a[i];
        prefiksXor[i] = prefiksXor[i-1]^a[i];
    }
    rep(i,1,n){
        cin>>b[i];
    }
    ll maxx = LLONG_MIN;
    rep(L,1,n) {
        int trenAnd = b[L];
        rep(R,L,min(n,L+30)){
            trenAnd&=b[R];
            int trenXor=prefiksXor[R]^prefiksXor[L-1];
            ll ans=static_cast<ll>(trenXor)*trenAnd;
            maxx=max(maxx,ans);
            if (trenAnd==0) break;
        }
    }
    cout<<maxx;
    return 0;
}