// Random oj.uz submit
// Идея: ако x не е събмаска на y, то има бит в който x e 1, y e 0 - той се праща
// Иначе, a != b => pop(a) != pop(b), пращаме най-малкия бит в който pop count-овете им се различават - log N + log (log N)

#include "timetravel.h"

int encode(int n, int a, int b) {
	if ((a & b) != a) {
		int h = 0;
		while (!(a >> h & 1) || b >> h & 1)
			h++;
		return h + 1;
	}
	int ka = 0, kb = 0;
	for (int h = 0; h < 10; h++) {
		if (a >> h & 1)
			ka++;
		if (b >> h & 1)
			kb++;
	}
	ka--, kb--;
	int h = 0;
	while (ka >> h & 1 || !(kb >> h & 1))
		h++;
	return 11 + h;
}

bool answer(int n, int c, int x) {
	if (x <= 10) {
		int h = x - 1;
		return c >> h & 1;
	}
	int h = x - 11, k = 0;
	for (int h = 0; h < 10; h++)
		if (c >> h & 1)
			k++;
	k--;
	return !(k >> h & 1);
}