#include<bits/stdc++.h>
using namespace std;
#define ll long long
int maxX (vector <ll> &pref)
{
	int m=0, maxor=0;
	int n=pref.size();
	for (int i=30; i>=0; i--)
    {
        set<ll> s;
		m|=(1<<i);
		for (int i=0; i<n; i++)
        {
			s.insert(pref[i]&m);
		}
		ll nmaxor=maxor|(1<<i);
		for (ll e:s)
        {
			if (s.count(nmaxor^e))
            {
				maxor=nmaxor;
				break;
			}
		}
	}
	return maxor;
}
int main()
{
    int n;
    cin>>n;
    vector <ll> a(n), b(n);
    bool f=true;
    for (int i=0; i<n; i++) cin>>a[i];
    for (int i=0; i<n; i++)
    {
        cin>>b[i];
        if (b[i]!=1) f=false;
    }
    if (f)
    {
        vector <ll> prefxor(n);
        prefxor[0]=0;
        for (int i=1; i<n; i++)
        {
            prefxor[i]=(prefxor[i-1]^a[i]);
        }
        cout<<maxX(prefxor)<<endl;
    }
    return 0;
}