#include <iostream>
#include <vector>
#include <climits>
using namespace std;

int main() {
    int duzina_nizova;
    cin>>duzina_nizova;

    vector<int> nizA(duzina_nizova), nizB(duzina_nizova);
    for (int i = 0; i < duzina_nizova; i++)
        cin>>nizA[i];

    for (int i = 0; i < duzina_nizova; i++) 
        cin>>nizB[i];
    
	long long maksimalna_vrednost = LLONG_MIN;
    for (int L = 0; L < duzina_nizova; L++) 
	{
        int ukupniXor = 0;
        int ukupniAnd = nizB[L];
        for (int R = L; R < duzina_nizova; R++) 
		{
            ukupniXor ^= nizA[R];
            ukupniAnd &= nizB[R];
            long long ukupna_vrednost = (long long)ukupniXor * ukupniAnd;
            
            maksimalna_vrednost = max(maksimalna_vrednost, ukupna_vrednost);
        }
    }
    cout<<maksimalna_vrednost;
    return 0;
}