#include <bits/stdc++.h>
#define ubrzaj ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);

using namespace std;

int main(){

    ubrzaj
    long long n;
    cin >> n;
    vector<long long> a(n);
    vector<long long> b(n);
    for(long long i=0; i<n; i++){cin >> a[i];}
    for(long long i=0; i<n; i++){cin >> b[i];}

    vector<pair<long long,long long>> s;//y,x
    long long res=0;
    for(long long i=0; i<n; i++){

        vector<pair<long long,long long>> s1;
        long long Y=b[i];
        long long X=a[i];
        s1.emplace_back(Y,X);

    for(auto &p:s){
        //cout << p.first << "," << p.second << endl;
        long long ypro=p.first;
        long long xpro=p.second;

        long long ytren=ypro&b[i];
        long long xtren=xpro^a[i];
        ///cout << xtren << ":" << ytren << endl;

        if(s1.empty() || s1.back().first!=ytren){s1.emplace_back(ytren,xtren);}
        else{s1.back().second=max(s1.back().second,xtren);}
    }

    s.clear();

    for(auto &p:s1){
        res=max(res,(long long)p.first*p.second);
            //cout << res << endl;
        if(s.empty() || s.back().first!=p.first){s.push_back(p);}
        else{s.back().second=max(s.back().second,p.second);}
    }
    }
    cout<<res<<endl;
    return 0;
}