struct precalc
{
int p[924];
constexpr precalc() : p{}
{
int l = 0;
for (int i = 0; i < 1 << 12; ++i)
if (__builtin_popcount(i) == 6)
p[l++] = i;
}
};
constexpr precalc z;
int encode(int n, int x, int y) { return __builtin_ctz(z.p[x] ^ (z.p[x] & z.p[y])) + 1; }
struct precalc
{
int p[924];
constexpr precalc() : p{}
{
int l = 0;
for (int i = 0; i < 1 << 12; ++i)
if (__builtin_popcount(i) == 6)
p[l++] = i;
}
};
constexpr precalc z;
int decode(int n, int q, int h) { return (bool)(z.p[q] & (1 << (h - 1))); }