#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll x[200005][35],y[200005][35],a[200005],b[200005],res[200005];
vector<ll> z_function(vector<ll> &v) {
    ll n=v.size();
    vector<ll> z(n),res;
    for(ll i=1,l=0,r=0;i<n;i++){
        if(i<=r)
        z[i]=min(r-i+1,z[i-l]);
        while(i+z[i]<n&&v[z[i]]==v[i+z[i]])
        z[i]++;
        if(i+z[i]-1>r){
            l=i;
            r=i+z[i]-1;
        }
    }
    return z;
}
void func(ll x,ll i,ll arr[][35]){
    ll cnt=0;
    while(x>0){
        arr[i][cnt]=(x&1);
        x/=2;
        cnt++;
    }
    for(ll j=0;j<35/2;j++)
    swap(arr[i][j],arr[i][34-j]);
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    ll n;
    cin>>n;
    for(ll i=0;i<n;i++){
        cin>>a[i];
        res[i]=1;
        func(a[i],i,x);
    }
    for(ll i=0;i<n;i++){
        cin>>b[i];
        func(b[i],i,y);
    }
    for(ll g=0;g<35;g++){
        vector<ll> v;
        for(ll i=0;i<n;i++)
        v.push_back(y[i][g]);
        v.push_back(5);
        for(ll i=0;i<n;i++)
        v.push_back(x[i][g]);
        for(ll i=0;i<n;i++)
        v.push_back(x[i][g]);
        vector<ll> z1=z_function(v);
        for(ll i=0;i<n;i++)
        v[i]^=1;
        vector<ll> z2=z_function(v);
        for(ll i=n+1;i<2*n+1;i++)
        if((res[i-n-1]==1)&&(z1[i]<n)&&(z2[i]<n))
        res[i-n-1]=0;
    }
    for(ll i=0;i<n;i++)
    if(res[i])
    cout<<i<<" "<<(a[i]^b[0])<<endl;
}
