#include <bits/stdc++.h>
#define ll long long
#define el cout << endl
#define bit(mask, i) (((mask) >> (i)) & 1)
#define BIT(n) (1ll << (n))
using namespace std;
namespace SUBTASK_1
{
const int maxlog = 9;
namespace personA
{
int encode(int N, int x, int y)
{
for (int i = 0; i <= maxlog; i++)
if (bit(x, i) ^ bit(y, i))
return i * 2 + bit(x, i) + 1;
return -1;
}
}
namespace personB
{
int decode(int N, int q, int h)
{
h--;
return bit(q, h / 2) == h % 2;
}
}
}
namespace SUBTASK_2
{
const int maxlog = 9;
namespace personA
{
int encode(int N, int x, int y)
{
for (int i = 0; i <= maxlog; i++)
if (bit(x, i) ^ bit(y, i))
return bit(y, i) * maxlog + i + 1;
return -1;
}
}
namespace personB
{
int decode(int N, int q, int h)
{
h--;
if (h <= maxlog)
return bit(q, h);
return !bit(q, h - maxlog);
}
}
}
int encode(int N, int x, int y)
{
return SUBTASK_2::personA::encode(N, x, y);
}
int decode(int N, int q, int h)
{
return SUBTASK_2::personB::decode(N, q, h);
}
#include <bits/stdc++.h>
#define ll long long
#define el cout << endl
#define bit(mask, i) (((mask) >> (i)) & 1)
#define BIT(n) (1ll << (n))
using namespace std;
namespace SUBTASK_1
{
const int maxlog = 9;
namespace personA
{
int encode(int N, int x, int y)
{
for (int i = 0; i <= maxlog; i++)
if (bit(x, i) ^ bit(y, i))
return i * 2 + bit(x, i) + 1;
return -1;
}
}
namespace personB
{
int decode(int N, int q, int h)
{
h--;
return bit(q, h / 2) == h % 2;
}
}
}
namespace SUBTASK_2
{
const int maxlog = 9;
namespace personA
{
int encode(int N, int x, int y)
{
for (int i = 0; i <= maxlog; i++)
if (bit(x, i) ^ bit(y, i))
return bit(y, i) * maxlog + i + 1;
return -1;
}
}
namespace personB
{
int decode(int N, int q, int h)
{
h--;
if (h <= maxlog)
return bit(q, h);
return !bit(q, h - maxlog);
}
}
}
int encode(int N, int x, int y)
{
return SUBTASK_2::personA::encode(N, x, y);
}
int decode(int N, int q, int h)
{
return SUBTASK_2::personB::decode(N, q, h);
}