stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#include<iostream>

#include<algorithm>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

vel solve(V<vel>& ab, int ex) {

	if (ex == 0) { return { 1, 0 }; }

	V<V<vel>> qab(2);

	for (vel x : ab) {

		int a1 = x[0];

		int b1 = x[1];

		qab[x[1] & 1].push_back({ x[0] / 2,x[1] / 2 });

		if (x[0] & 1) { qab[(x[1] + 1) & 1].push_back({ x[0] / 2,(x[1] + 1) / 2 }); }

	}

	V<vel> c(3,vel(2));

	rep(i, 2) {

		for (auto x : qab[i]) {

			int qc = (3 - x[0] + x[1]) % 3; qc = (qc + 3) % 3;

			if (qc == 0) { c[i][0] ^= 1; }

			if (qc == 1) { c[i][1] ^= 1; }

			if (qc == 2) { c[i][0] ^= 1; c[i][1] ^= 1; }

		}

	}

	if (c[0] == c[2]) {

		vel ans = solve(qab[1], ex - 1);

		ans[0] *= 2; ans[1] *= 2;ans[1]++;

		return ans;

	}

	if (c[1] == c[2]) {

		vel ans = solve(qab[0], ex - 1);

		ans[0] *= 2; ans[1] *= 2;

		return ans;

	}

	rep(i, ab.size()) { ab[i][0]++; }

	vel ans = solve(ab, ex); ans[0]--;

	return ans;

}

signed main() {

	int inf = 2e17;

	int n; cin >> n;

	V<vel> ab(n);

	rep(i, n) {

		int a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	vel ret = solve(ab, 70);

	cout << ret[0] - inf << " " << ret[1] - inf << "\n";

}

// Faster C++ solution for the same problem (measured speedup: 1.1034268423057925x):
#include<iostream>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

#define mkp make_pair

#define pin pair<int,int>

pin solve(V<pin>& ab, int ex) {

	if (!ex) { return mkp(1, 0); }

	V<V<pin>> qab(2);

	for (pin x : ab) {

		qab[x.second & 1].push_back(mkp(x.first / 2, x.second / 2));

		if (x.first & 1) { qab[(x.second + 1) & 1].push_back(mkp(x.first / 2, (x.second + 1) / 2)); }

	}

	V<vel> c(2, vel(2));

	rep(i, 2) {

		for (pin x : qab[i]) {

			int qc = (2 * x.first + x.second) % 3;

			if ((qc + 1) % 2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (!c[1 - i][0] && !c[1 - i][1]) {

			pin ans = solve(qab[i], ex - 1);

			ans.first *= 2; ans.second *= 2; ans.second += i;

			return ans;

		}

	}

	for (pin& v : ab) { v.first++; }

	pin ans = solve(ab, ex); ans.first--;

	return ans;

}

signed main() {

	long long inf = 2e17;

	int n; scanf("%lld",&n);

	V<pin> ab(n);

	rep(i, n) {

		long long a, b; scanf("%lld %lld",&a,&b);

		ab[i] = { a + inf,b + inf };

	}

	pin ret = solve(ab, 70);

	cout << ret.first - inf << " " << ret.second - inf;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

vel solve(V<vel>& ab, int ex) {

	if (ex == 0) { return { 1, 0 }; }

	V<V<vel>> qab(2);

	for (vel x : ab) {

		qab[x[1] & 1].push_back({ x[0] / 2,x[1] / 2 });

		if (x[0] & 1) { qab[(x[1] + 1) & 1].push_back({ x[0] / 2,(x[1] + 1) / 2 }); }

	}

	V<vel> c(3,vel(2));

	rep(i, 2) {

		for (vel x : qab[i]) {

			int qc = (3 - x[0] + x[1]) % 3; qc = (qc + 3) % 3;

			if (qc==0) { c[i][0] ^= 1; }

			if (qc==1) { c[i][1] ^= 1; }

			if (qc == 2) { c[i][0] ^= 1; c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (c[1-i] == c[2]) {

			vel ans = solve(qab[i], ex - 1);

			ans[0] *= 2; ans[1] *= 2; ans[1] += i;

			return ans;

		}

	}

	rep(i, ab.size()) { ab[i][0]++; }

	vel ans = solve(ab, ex); ans[0]--;

	return ans;

}

signed main() {

	int inf = 2e17;

	int n; cin >> n;

	V<vel> ab(n);

	rep(i, n) {

		int a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	vel ret = solve(ab, 70);

	cout << ret[0] - inf << " " << ret[1] - inf << "\n";

}

// Faster C++ solution for the same problem (measured speedup: 1.1031359532687917x):
#include<iostream>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

#define mkp make_pair

#define pin pair<int,int>

pin solve(V<pin>& ab, int ex) {

	if (!ex) { return mkp(1, 0); }

	V<V<pin>> qab(2);

	for (pin x : ab) {

		qab[x.second & 1].push_back(mkp(x.first / 2, x.second / 2));

		if (x.first & 1) { qab[(x.second + 1) & 1].push_back(mkp(x.first / 2, (x.second + 1) / 2)); }

	}

	V<vel> c(2, vel(2));

	rep(i, 2) {

		for (pin x : qab[i]) {

			int qc = (2 * x.first + x.second) % 3;

			if ((qc + 1) % 2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (!c[1 - i][0] && !c[1 - i][1]) {

			pin ans = solve(qab[i], ex - 1);

			ans.first *= 2; ans.second *= 2; ans.second += i;

			return ans;

		}

	}

	for (pin& v : ab) { v.first++; }

	pin ans = solve(ab, ex); ans.first--;

	return ans;

}

signed main() {

	long long inf = 2e17;

	int n; scanf("%lld",&n);

	V<pin> ab(n);

	rep(i, n) {

		long long a, b; scanf("%lld %lld",&a,&b);

		ab[i] = { a + inf,b + inf };

	}

	pin ret = solve(ab, 70);

	cout << ret.first - inf << " " << ret.second - inf;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

#define V vector

#define vel V<long long>

#define rep(i,n) for(int i=0;i<n;i++)

vel solve(V<vel>& ab, int ex) {

	if (!ex) { return { 1, 0 }; }

	V<V<vel>> qab(2);

	for (vel x : ab) {

		qab[x[1] & 1].push_back({ x[0] / 2,x[1] / 2 });

		if (x[0] & 1) { qab[(x[1] + 1) & 1].push_back({ x[0] / 2,(x[1] + 1) / 2 }); }

	}

	V<vel> c(3, vel(2));

	rep(i, 2) {

		for (vel x : qab[i]) {

			int qc = (2 * x[0] + x[1]) % 3;

			if ((qc+1)%2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (c[1 - i] == c[2]) {

			vel ans = solve(qab[i], ex - 1);

			ans[0] *= 2; ans[1] *= 2; ans[1] += i;

			return ans;

		}

	}

	for(vel &v:ab) { v[0]++; }

	vel ans = solve(ab, ex); ans[0]--;

	return ans;

}

int main() {

	long long inf = 2e17;

	int n; cin >> n;

	V<vel> ab(n);

	rep(i, n) {

		long long a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	vel ret = solve(ab, 70);

	cout << ret[0] - inf << " " << ret[1] - inf << "\n";

}

// Faster C++ solution for the same problem (measured speedup: 1.1087727306803978x):
#include<iostream>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

#define mkp make_pair

#define pin pair<int,int>

pin solve(V<pin>& ab, int ex) {

	if (!ex) { return mkp(1, 0); }

	V<V<pin>> qab(2);

	for (pin x : ab) {

		qab[x.second & 1].push_back(mkp(x.first / 2, x.second / 2));

		if (x.first & 1) { qab[(x.second + 1) & 1].push_back(mkp(x.first / 2, (x.second + 1) / 2)); }

	}

	V<vel> c(2, vel(2));

	rep(i, 2) {

		for (pin x : qab[i]) {

			int qc = (2 * x.first + x.second) % 3;

			if ((qc + 1) % 2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (!c[1 - i][0] && !c[1 - i][1]) {

			pin ans = solve(qab[i], ex - 1);

			ans.first *= 2; ans.second *= 2; ans.second += i;

			return ans;

		}

	}

	for (pin& v : ab) { v.first++; }

	pin ans = solve(ab, ex); ans.first--;

	return ans;

}

signed main() {

	long long inf = 2e17;

	int n; scanf("%lld",&n);

	V<pin> ab(n);

	rep(i, n) {

		long long a, b; scanf("%lld %lld",&a,&b);

		ab[i] = { a + inf,b + inf };

	}

	pin ret = solve(ab, 70);

	cout << ret.first - inf << " " << ret.second - inf;

}
// Slower C++ solution:
#include<iostream>

#include<algorithm>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

vel solve(V<vel>& ab, int ex) {

	if (ex == 0) { return { 1, 0 }; }

	V<V<vel>> qab(2);

	for (vel x : ab) {

		int a1 = x[0];

		int b1 = x[1];

		qab[x[1] & 1].push_back({ x[0] / 2,x[1] / 2 });

		if (x[0] & 1) { qab[(x[1] + 1) & 1].push_back({ x[0] / 2,(x[1] + 1) / 2 }); }

	}

	V<vel> c(3,vel(2));

	rep(i, 2) {

		for (auto x : qab[i]) {

			int qc = (3 - x[0] + x[1]) % 3; qc = (qc + 3) % 3;

			if (qc == 0) { c[i][0] ^= 1; }

			if (qc == 1) { c[i][1] ^= 1; }

			if (qc == 2) { c[i][0] ^= 1; c[i][1] ^= 1; }

		}

	}

	if (c[0] == c[2]) {

		vel ans = solve(qab[1], ex - 1);

		ans[0] *= 2; ans[1] *= 2;ans[1]++;

		return ans;

	}

	if (c[1] == c[2]) {

		vel ans = solve(qab[0], ex - 1);

		ans[0] *= 2; ans[1] *= 2;

		return ans;

	}

	rep(i, ab.size()) { ab[i][0]++; }

	vel ans = solve(ab, ex); ans[0]--;

	return ans;

}

signed main() {

	int inf = 2e17;

	int n; cin >> n;

	V<vel> ab(n);

	rep(i, n) {

		int a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	vel ret = solve(ab, 70);

	cout << ret[0] - inf << " " << ret[1] - inf << "\n";

}

// Faster C++ solution for the same problem (measured speedup: 1.1154908908563883x):
#include<iostream>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

#define mkp make_pair

#define pin pair<int,int>

pin solve(V<pin>& ab, int ex) {

	if (!ex) { return mkp(1, 0); }

	V<V<pin>> qab(2);

	for (pin x : ab) {

		qab[x.second & 1].push_back(mkp(x.first / 2, x.second / 2));

		if (x.first & 1) { qab[(x.second + 1) & 1].push_back(mkp(x.first / 2, (x.second + 1) / 2)); }

	}

	V<vel> c(2, vel(2));

	rep(i, 2) {

		for (pin x : qab[i]) {

			int qc = (2 * x.first + x.second) % 3;

			if ((qc + 1) % 2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (!c[1 - i][0] && !c[1 - i][1]) {

			pin ans = solve(qab[i], ex - 1);

			ans.first *= 2; ans.second *= 2; ans.second += i;

			return ans;

		}

	}

	for (pin& v : ab) { v.first++; }

	pin ans = solve(ab, ex); ans.first--;

	return ans;

}

signed main() {

	cin.tie(0); ios::sync_with_stdio(false);

	long long inf = 2e17;

	int n; cin >> n;

	V<pin> ab(n);

	rep(i, n) {

		long long a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	pin ret = solve(ab, 59);

	cout << ret.first - inf << " " << ret.second - inf;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

vel solve(V<vel>& ab, int ex) {

	if (ex == 0) { return { 1, 0 }; }

	V<V<vel>> qab(2);

	for (vel x : ab) {

		qab[x[1] & 1].push_back({ x[0] / 2,x[1] / 2 });

		if (x[0] & 1) { qab[(x[1] + 1) & 1].push_back({ x[0] / 2,(x[1] + 1) / 2 }); }

	}

	V<vel> c(3,vel(2));

	rep(i, 2) {

		for (vel x : qab[i]) {

			int qc = (3 - x[0] + x[1]) % 3; qc = (qc + 3) % 3;

			if (qc==0) { c[i][0] ^= 1; }

			if (qc==1) { c[i][1] ^= 1; }

			if (qc == 2) { c[i][0] ^= 1; c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (c[1-i] == c[2]) {

			vel ans = solve(qab[i], ex - 1);

			ans[0] *= 2; ans[1] *= 2; ans[1] += i;

			return ans;

		}

	}

	rep(i, ab.size()) { ab[i][0]++; }

	vel ans = solve(ab, ex); ans[0]--;

	return ans;

}

signed main() {

	int inf = 2e17;

	int n; cin >> n;

	V<vel> ab(n);

	rep(i, n) {

		int a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	vel ret = solve(ab, 70);

	cout << ret[0] - inf << " " << ret[1] - inf << "\n";

}

// Faster C++ solution for the same problem (measured speedup: 1.1151968214549712x):
#include<iostream>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

#define mkp make_pair

#define pin pair<int,int>

pin solve(V<pin>& ab, int ex) {

	if (!ex) { return mkp(1, 0); }

	V<V<pin>> qab(2);

	for (pin x : ab) {

		qab[x.second & 1].push_back(mkp(x.first / 2, x.second / 2));

		if (x.first & 1) { qab[(x.second + 1) & 1].push_back(mkp(x.first / 2, (x.second + 1) / 2)); }

	}

	V<vel> c(2, vel(2));

	rep(i, 2) {

		for (pin x : qab[i]) {

			int qc = (2 * x.first + x.second) % 3;

			if ((qc + 1) % 2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (!c[1 - i][0] && !c[1 - i][1]) {

			pin ans = solve(qab[i], ex - 1);

			ans.first *= 2; ans.second *= 2; ans.second += i;

			return ans;

		}

	}

	for (pin& v : ab) { v.first++; }

	pin ans = solve(ab, ex); ans.first--;

	return ans;

}

signed main() {

	cin.tie(0); ios::sync_with_stdio(false);

	long long inf = 2e17;

	int n; cin >> n;

	V<pin> ab(n);

	rep(i, n) {

		long long a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	pin ret = solve(ab, 59);

	cout << ret.first - inf << " " << ret.second - inf;

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

#define V vector

#define vel V<long long>

#define rep(i,n) for(int i=0;i<n;i++)

vel solve(V<vel>& ab, int ex) {

	if (!ex) { return { 1, 0 }; }

	V<V<vel>> qab(2);

	for (vel x : ab) {

		qab[x[1] & 1].push_back({ x[0] / 2,x[1] / 2 });

		if (x[0] & 1) { qab[(x[1] + 1) & 1].push_back({ x[0] / 2,(x[1] + 1) / 2 }); }

	}

	V<vel> c(3, vel(2));

	rep(i, 2) {

		for (vel x : qab[i]) {

			int qc = (2 * x[0] + x[1]) % 3;

			if ((qc+1)%2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (c[1 - i] == c[2]) {

			vel ans = solve(qab[i], ex - 1);

			ans[0] *= 2; ans[1] *= 2; ans[1] += i;

			return ans;

		}

	}

	for(vel &v:ab) { v[0]++; }

	vel ans = solve(ab, ex); ans[0]--;

	return ans;

}

int main() {

	long long inf = 2e17;

	int n; cin >> n;

	V<vel> ab(n);

	rep(i, n) {

		long long a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	vel ret = solve(ab, 70);

	cout << ret[0] - inf << " " << ret[1] - inf << "\n";

}

// Faster C++ solution for the same problem (measured speedup: 1.1208952271991097x):
#include<iostream>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

#define mkp make_pair

#define pin pair<int,int>

pin solve(V<pin>& ab, int ex) {

	if (!ex) { return mkp(1, 0); }

	V<V<pin>> qab(2);

	for (pin x : ab) {

		qab[x.second & 1].push_back(mkp(x.first / 2, x.second / 2));

		if (x.first & 1) { qab[(x.second + 1) & 1].push_back(mkp(x.first / 2, (x.second + 1) / 2)); }

	}

	V<vel> c(2, vel(2));

	rep(i, 2) {

		for (pin x : qab[i]) {

			int qc = (2 * x.first + x.second) % 3;

			if ((qc + 1) % 2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (!c[1 - i][0] && !c[1 - i][1]) {

			pin ans = solve(qab[i], ex - 1);

			ans.first *= 2; ans.second *= 2; ans.second += i;

			return ans;

		}

	}

	for (pin& v : ab) { v.first++; }

	pin ans = solve(ab, ex); ans.first--;

	return ans;

}

signed main() {

	cin.tie(0); ios::sync_with_stdio(false);

	long long inf = 2e17;

	int n; cin >> n;

	V<pin> ab(n);

	rep(i, n) {

		long long a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	pin ret = solve(ab, 59);

	cout << ret.first - inf << " " << ret.second - inf;

}
// Slower C++ solution:
#include<iostream>

#include<algorithm>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

vel solve(V<vel>& ab, int ex) {

	if (ex == 0) { return { 1, 0 }; }

	V<V<vel>> qab(2);

	for (vel x : ab) {

		int a1 = x[0];

		int b1 = x[1];

		qab[x[1] & 1].push_back({ x[0] / 2,x[1] / 2 });

		if (x[0] & 1) { qab[(x[1] + 1) & 1].push_back({ x[0] / 2,(x[1] + 1) / 2 }); }

	}

	V<vel> c(3,vel(2));

	rep(i, 2) {

		for (auto x : qab[i]) {

			int qc = (3 - x[0] + x[1]) % 3; qc = (qc + 3) % 3;

			if (qc == 0) { c[i][0] ^= 1; }

			if (qc == 1) { c[i][1] ^= 1; }

			if (qc == 2) { c[i][0] ^= 1; c[i][1] ^= 1; }

		}

	}

	if (c[0] == c[2]) {

		vel ans = solve(qab[1], ex - 1);

		ans[0] *= 2; ans[1] *= 2;ans[1]++;

		return ans;

	}

	if (c[1] == c[2]) {

		vel ans = solve(qab[0], ex - 1);

		ans[0] *= 2; ans[1] *= 2;

		return ans;

	}

	rep(i, ab.size()) { ab[i][0]++; }

	vel ans = solve(ab, ex); ans[0]--;

	return ans;

}

signed main() {

	int inf = 2e17;

	int n; cin >> n;

	V<vel> ab(n);

	rep(i, n) {

		int a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	vel ret = solve(ab, 70);

	cout << ret[0] - inf << " " << ret[1] - inf << "\n";

}

// Faster C++ solution for the same problem (measured speedup: 1.104834919968987x):
#include<iostream>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

#define mkp make_pair

#define pin pair<int,int>

pin solve(V<pin>& ab, int ex) {

	if (!ex) { return mkp(1, 0); }

	V<V<pin>> qab(2);

	for (pin x : ab) {

		qab[x.second & 1].push_back(mkp(x.first / 2, x.second / 2));

		if (x.first & 1) { qab[(x.second + 1) & 1].push_back(mkp(x.first / 2, (x.second + 1) / 2)); }

	}

	V<vel> c(2, vel(2));

	rep(i, 2) {

		for (pin x : qab[i]) {

			int qc = (2 * x.first + x.second) % 3;

			if ((qc + 1) % 2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (!c[1 - i][0] && !c[1 - i][1]) {

			pin ans = solve(qab[i], ex - 1);

			ans.first *= 2; ans.second *= 2; ans.second += i;

			return ans;

		}

	}

	for (pin& v : ab) { v.first++; }

	pin ans = solve(ab, ex); ans.first--;

	return ans;

}

int readint() {

	int res = 0;

	char c = getchar();

	if ('0' <= c && c <= '9') {

		while ('0' <= c && c <= '9') {

			res = res * 10 + c - '0';

			c = getchar();

		}

	}

	else {

		c = getchar();

		while ('0' <= c && c <= '9') {

			res = res * 10 + c - '0';

			c = getchar();

		}

		res *= -1;

	}

	return res;

}

signed main() {

	long long inf = 2e17;

	int n = readint();

	V<pin> ab(n);

	rep(i, n) {

		long long a, b; a = readint(); b = readint();

		ab[i] = { a + inf,b + inf };

	}

	pin ret = solve(ab, 70);

	cout << ret.first - inf << " " << ret.second - inf << "\n";

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

vel solve(V<vel>& ab, int ex) {

	if (ex == 0) { return { 1, 0 }; }

	V<V<vel>> qab(2);

	for (vel x : ab) {

		qab[x[1] & 1].push_back({ x[0] / 2,x[1] / 2 });

		if (x[0] & 1) { qab[(x[1] + 1) & 1].push_back({ x[0] / 2,(x[1] + 1) / 2 }); }

	}

	V<vel> c(3,vel(2));

	rep(i, 2) {

		for (vel x : qab[i]) {

			int qc = (3 - x[0] + x[1]) % 3; qc = (qc + 3) % 3;

			if (qc==0) { c[i][0] ^= 1; }

			if (qc==1) { c[i][1] ^= 1; }

			if (qc == 2) { c[i][0] ^= 1; c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (c[1-i] == c[2]) {

			vel ans = solve(qab[i], ex - 1);

			ans[0] *= 2; ans[1] *= 2; ans[1] += i;

			return ans;

		}

	}

	rep(i, ab.size()) { ab[i][0]++; }

	vel ans = solve(ab, ex); ans[0]--;

	return ans;

}

signed main() {

	int inf = 2e17;

	int n; cin >> n;

	V<vel> ab(n);

	rep(i, n) {

		int a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	vel ret = solve(ab, 70);

	cout << ret[0] - inf << " " << ret[1] - inf << "\n";

}

// Faster C++ solution for the same problem (measured speedup: 1.1045436597298914x):
#include<iostream>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

#define mkp make_pair

#define pin pair<int,int>

pin solve(V<pin>& ab, int ex) {

	if (!ex) { return mkp(1, 0); }

	V<V<pin>> qab(2);

	for (pin x : ab) {

		qab[x.second & 1].push_back(mkp(x.first / 2, x.second / 2));

		if (x.first & 1) { qab[(x.second + 1) & 1].push_back(mkp(x.first / 2, (x.second + 1) / 2)); }

	}

	V<vel> c(2, vel(2));

	rep(i, 2) {

		for (pin x : qab[i]) {

			int qc = (2 * x.first + x.second) % 3;

			if ((qc + 1) % 2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (!c[1 - i][0] && !c[1 - i][1]) {

			pin ans = solve(qab[i], ex - 1);

			ans.first *= 2; ans.second *= 2; ans.second += i;

			return ans;

		}

	}

	for (pin& v : ab) { v.first++; }

	pin ans = solve(ab, ex); ans.first--;

	return ans;

}

int readint() {

	int res = 0;

	char c = getchar();

	if ('0' <= c && c <= '9') {

		while ('0' <= c && c <= '9') {

			res = res * 10 + c - '0';

			c = getchar();

		}

	}

	else {

		c = getchar();

		while ('0' <= c && c <= '9') {

			res = res * 10 + c - '0';

			c = getchar();

		}

		res *= -1;

	}

	return res;

}

signed main() {

	long long inf = 2e17;

	int n = readint();

	V<pin> ab(n);

	rep(i, n) {

		long long a, b; a = readint(); b = readint();

		ab[i] = { a + inf,b + inf };

	}

	pin ret = solve(ab, 70);

	cout << ret.first - inf << " " << ret.second - inf << "\n";

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

#define V vector

#define vel V<long long>

#define rep(i,n) for(int i=0;i<n;i++)

vel solve(V<vel>& ab, int ex) {

	if (!ex) { return { 1, 0 }; }

	V<V<vel>> qab(2);

	for (vel x : ab) {

		qab[x[1] & 1].push_back({ x[0] / 2,x[1] / 2 });

		if (x[0] & 1) { qab[(x[1] + 1) & 1].push_back({ x[0] / 2,(x[1] + 1) / 2 }); }

	}

	V<vel> c(3, vel(2));

	rep(i, 2) {

		for (vel x : qab[i]) {

			int qc = (2 * x[0] + x[1]) % 3;

			if ((qc+1)%2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (c[1 - i] == c[2]) {

			vel ans = solve(qab[i], ex - 1);

			ans[0] *= 2; ans[1] *= 2; ans[1] += i;

			return ans;

		}

	}

	for(vel &v:ab) { v[0]++; }

	vel ans = solve(ab, ex); ans[0]--;

	return ans;

}

int main() {

	long long inf = 2e17;

	int n; cin >> n;

	V<vel> ab(n);

	rep(i, n) {

		long long a, b; cin >> a >> b;

		ab[i] = { a + inf,b + inf };

	}

	vel ret = solve(ab, 70);

	cout << ret[0] - inf << " " << ret[1] - inf << "\n";

}

// Faster C++ solution for the same problem (measured speedup: 1.1101876302059233x):
#include<iostream>

#include<vector>

using namespace std;

#define int long long

#define V vector

#define vel V<int>

#define rep(i,n) for(int i=0;i<n;i++)

#define mkp make_pair

#define pin pair<int,int>

pin solve(V<pin>& ab, int ex) {

	if (!ex) { return mkp(1, 0); }

	V<V<pin>> qab(2);

	for (pin x : ab) {

		qab[x.second & 1].push_back(mkp(x.first / 2, x.second / 2));

		if (x.first & 1) { qab[(x.second + 1) & 1].push_back(mkp(x.first / 2, (x.second + 1) / 2)); }

	}

	V<vel> c(2, vel(2));

	rep(i, 2) {

		for (pin x : qab[i]) {

			int qc = (2 * x.first + x.second) % 3;

			if ((qc + 1) % 2) { c[i][0] ^= 1; }

			if (qc) { c[i][1] ^= 1; }

		}

	}

	rep(i, 2) {

		if (!c[1 - i][0] && !c[1 - i][1]) {

			pin ans = solve(qab[i], ex - 1);

			ans.first *= 2; ans.second *= 2; ans.second += i;

			return ans;

		}

	}

	for (pin& v : ab) { v.first++; }

	pin ans = solve(ab, ex); ans.first--;

	return ans;

}

int readint() {

	int res = 0;

	char c = getchar();

	if ('0' <= c && c <= '9') {

		while ('0' <= c && c <= '9') {

			res = res * 10 + c - '0';

			c = getchar();

		}

	}

	else {

		c = getchar();

		while ('0' <= c && c <= '9') {

			res = res * 10 + c - '0';

			c = getchar();

		}

		res *= -1;

	}

	return res;

}

signed main() {

	long long inf = 2e17;

	int n = readint();

	V<pin> ab(n);

	rep(i, n) {

		long long a, b; a = readint(); b = readint();

		ab[i] = { a + inf,b + inf };

	}

	pin ret = solve(ab, 70);

	cout << ret.first - inf << " " << ret.second - inf << "\n";

}