int main() {
    long N;
    scanf("%ld", &N);
    long A[N], B[N];
    for (int i = 0; i < N; i++)
        scanf("%ld", &A[i]);

    for (int i = 0; i < N; i++)
        scanf("%ld", &B[i]);
    long max = 0;

    for (int L = 0; L < N; L++) {
        for (int R = L; R < N; R++) {
            int prvi_niz_vrednost = 0;
            int drugi_niz_vrednost = -1;

            for (int i = L; i <= R; i++) {
                prvi_niz_vrednost ^= A[i];
                drugi_niz_vrednost &= B[i];
            }
            long uporedi = prvi_niz_vrednost * drugi_niz_vrednost;

            if (uporedi > max)
                max = uporedi;
        }
    }

    printf("%ld", max);
    return 0;
}