#include <bits/stdc++.h>

using namespace std;

int tabla[20000][20];
void sparse(int a[],int n){
    for(int i = 0;i<n;i++){
        tabla[i][0]=a[i];
    }
    for(int j = 1;(1<<j)<n;j++){
        for(int i = 1;i+(1<<j)-1<n;i++){
            tabla[i][j]=tabla[i][j-1]&tabla[i+(1<<i-1)][j-1];
        }
    }
}
int izracunaj(int l,int r){
    int j = log2(r-l+1);
    return tabla[l][j]&tabla[r-(1<<j)+1][j];
}
int main(){
    int A[20000],B[20000],preA[20000];
    int n,res1,res2;
    cin>>n;
    for(int i = 0;i<n;i++){
        cin>>A[i];
    }
    for(int i = 0;i<n;i++){
        cin>>B[i];
    }
    preA[0]=A[0];
    for(int i = 1;i<n;i++){
        preA[i]=preA[i-1]^A[i];
    }
    sparse(B,n);
    int maxp=0;
    bool posres=false;
    for(int l = 0;l<n-1;l++){
        for(int r=l+1;r<n;r++){
            res1=preA[r]^preA[l-1];
            res2=izracunaj(l,r);
            if(res1*res2>maxp||posres==false){
                maxp=res1*res2;
                posres=true;
            }
        }
    }
    cout<<maxp;
    return 0;
}