using System;

class Program
{
    static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine());
        var a = Array.ConvertAll(Console.ReadLine().Split(), long.Parse);
        var b = Array.ConvertAll(Console.ReadLine().Split(), long.Parse);

        long[] prefiksXor = new long[n + 1];
        for (int i = 1; i <= n; i++)
        {
            prefiksXor[i] = prefiksXor[i - 1] ^ a[i - 1];
        }

        long[] sufiksAnd = new long[n + 2];
        sufiksAnd[n + 1] = -1;
        for (int i = n; i >= 1; i--)
        {
            sufiksAnd[i] = sufiksAnd[i + 1] & b[i - 1];
        }

        long maksimalnaVrednost = 0;
        for (int l = 1; l <= n; l++)
        {
            for (int r = l; r <= n; r++)
            {
                long xorVrednost = prefiksXor[r] ^ prefiksXor[l - 1];
                long andVrednost = sufiksAnd[l];
                maksimalnaVrednost = Math.Max(maksimalnaVrednost, xorVrednost * andVrednost);
            }
        }

        Console.WriteLine(maksimalnaVrednost);
    }
}