#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int binarni(int a)
{
    if(a == 0)
        return 0;
    else return binarni(a/2)*10 + a%2;
}
int binarni_udec(int a)
{
    int i = 1;
    int s = 0;
    while(a != 0)
    {
        s = s + a%10 * i;
        i = i * 2;
        a = a / 10;
    }
    return s;
}
int novibroj_xor(int a, int b)
{
    if(a == 0 && b == 0)
        return 0;
    else
        if(a%10 > b%10)
        return novibroj_xor(a/10, b/10)*10 + a%10;
    else
        if(a%10 < b%10)
           return novibroj_xor(a/10, b/10)*10 + b%10;
    else return novibroj_xor(a/10, b/10)*10 + 0;
}
int novibroj_and(int a, int b)
{
    if(a == 0 && b == 0)
        return 0;
    else
        if (a%10 == 1 && b%10 == 1)
        return novibroj_and(a/10, b/10)*10 + 1;
    else return novibroj_and(a/10, b/10)*10 + 0;

}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
    cin >> n;
    int a[n];
    int b[n];
    int l = 0;
    int r = 0;
    int rezultat = 1;
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
        if(l < a[i])
            l = i;
    }
    for(int i = 1; i <= n; i++)
    {
        cin >> b[i];
        if(r < b[i])
            r = i;
    }
    for(int i = l; i <= r; i+=2)
    {
        rezultat = rezultat * novibroj_xor(binarni(a[i]), binarni(a[i + 1])) * novibroj_and(binarni(b[i]), binarni(b[i + 1]));
    }
    cout << binarni_udec(rezultat);
    return 0;
}