#include <bits/stdc++.h>

using namespace std;
#define int long long
const int MOD = 1000000007;

signed main() {
	cin.tie(0);
	ios::sync_with_stdio(false);
	int N;
	cin >> N;
	vector<int> A(N);
	vector<int> B(N);
	for (int i = 0; i < N; i++) {
		cin >> A[i];
	}
	for (int i = 0; i < N; i++) {
		cin >> B[i];
	}
	vector<int> AA(N);
	vector<int> BB(N);
	for (int i = 0; i < N; i++) {
		AA[i] = (A[i] ^ A[(i + 1) % N]);
		BB[i] = (B[i] ^ B[(i + 1) % N]);
	}
	for (int i = 0; i < N; i++) {
		AA.push_back(BB[i]);
		//cerr << AA.back()<<endl;
	}
	for (int i = 0; i < N; i++) {
		AA.push_back(BB[i]);
	}
	vector<int> X(AA.size(), 0);

	X[0] = AA.size();
	{
		int i = 1, j = 0;
		while (i < AA.size()) {
			while (i + j < AA.size() && AA[j] == AA[i + j]) ++j;
			X[i] = j;
			if (j == 0) {
				++i;
				continue;
			}
			int k = 1;
			while (i + k < AA.size() && k + X[k] < j) X[i + k] = X[k], ++k;
			i += k;
			j -= k;
		}
	}
	// for (int i = 0; i < AA.size(); i++) {
	// 	cerr << AA[i] << " ";
	// }
	// cerr << endl;
	// for (int i = 0; i < AA.size(); i++) {
	// 	cerr << X[i] << " ";
	// }
	// cerr << endl;
	vector<int> res;
	for (int i = N; i < 2 * N; i++) {
		if (X[i] >= N) {
			res.push_back(N - (i - N));
			if(res.back() == N)res.back() = 0;
		}
	}
	sort(res.begin(), res.end());
	for (int i = 0; i < res.size(); i++) {
		cout << res[i] << " " << (A[res[i]] ^ B[0]) << "\n";
	}
	return 0;
}