#include <iostream>
#include <vector>
#include <climits>

using namespace std;

    long long nadjiMAX(int N, vector<int>& A, vector<int>& B) {
    long long maxVrednost= LLONG_MIN;
    vector<int> pror(N + 1, 0);
    for (int i = 1; i <= N; ++i) {
        pror[i] = pror[i - 1] ^ A[i - 1];
    }

    for (int L = 1; L <= N; ++L) {
        int trI = B[L - 1];
        for (int R = L; R <= N; ++R) {
            trI &= B[R - 1];
            long long trXor = pror[R] ^ pror[L - 1];
            maxVrednost = max(maxVrednost, trXor * trI);
        }
    }

    return maxVrednost;
}

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

    vector<int> A(N), B(N);
    for (int i = 0; i < N; ++i) cin >> A[i];
    for (int i = 0; i < N; ++i) cin >> B[i];

    cout << nadjiMAX(N, A, B) << endl;

    return 0;
}