#include <bits/stdc++.h>
using namespace std;
ifstream fin ("fractal.in");
ofstream fout("fractal.out");
// ud\lr 0 1
// 0 0 3
// 1 1 2
int decode(int leftOrRight, int upOrDown) {
if (leftOrRight == 0) return upOrDown;
else return 3 - upOrDown;
}
int main() {
int n, k;
// fin >> n >> k;
fin >> n;
k = 1;
while (k--) {
int x, y;
fin >> x >> y;
x--;
y--;
swap(x, y);
// x = (16 - k - 1) / 4;
// y = (16 - k - 1) % 4;
int result = 0;
int p = (1 << n);
while (p > 1) {
p /= 2;
int leftOrRight = (y >= p);
int upOrDown = (x >= p);
result += decode(leftOrRight, upOrDown) * p * p;
x %= p;
y %= p;
if (upOrDown == 0) {
if (leftOrRight) {
int sx = x, sy = y;
x = p - 1 - sy;
y = p - 1 - sx;
} else {
swap(x, y);
}
}
}
if (k % 4 == 0)
fout << result << '\n';
else fout << result << ' ';
}
}