namespace Zad2
{
    using System;

    class Program
    {
        static void Main()
        {
            // ulazni podaci
            int N = int.Parse(Console.ReadLine());
            string[] A_input = Console.ReadLine().Split();
            string[] B_input = Console.ReadLine().Split();

            int[] A = new int[N];
            int[] B = new int[N];

            for (int i = 0; i < N; i++)
            {
                A[i] = int.Parse(A_input[i]);
                B[i] = int.Parse(B_input[i]);
            }

            int max_value = int.MinValue;

            // provera podnizova
            for (int L = 0; L < N; L++)
            {
                int xor_sum = 0;
                int and_sum = ~0; // pocetna vrednost

                for (int R = L; R < N; R++)
                {
                    // izracunaj XOR od L do R
                    xor_sum ^= A[R];
                    // izracunaj  AND od L do R
                    and_sum &= B[R];

                    //izracun vednosti podnaiz
                    int value = xor_sum * and_sum;

                    // uznni max
                    if (value > max_value)
                    {
                        max_value = value;
                    }
                }
            }

            // ????? ?????????
            Console.WriteLine(max_value);
        }
    }
}