#include <fstream>
#include <cmath>
using namespace std;
int x, y;
int drum(int x1, int y1, int x2, int y2, int k, int v)
{
if (x1 == x2 && y1 == y2)
return 0;
if (x2 < x1 || y2 < y1)
return 0;
if (k == 1)
{
if (x <= (x1+x2) / 2)
{
if (y <= (y1+y2) / 2)
return drum(x1, y1, (x1+x2)/2, (y1+y2)/2, 3, v/4);
else
return v + drum(x1, (y1+y2)/2 + 1, (x1+x2)/2, y2, 1, v/4);
}
else
{
if (y <= (y1+y2) / 2)
return 3 * v + drum((x1+x2)/2 + 1, y1, x2, (y1+y2)/2, 2, v/4);
else
return 2 * v + drum((x1+x2)/2 + 1, (y1+y2)/2 + 1, x2, y2, 1, v/4);
}
}
if (k == 2)
{
if (x <= (x1+x2) / 2)
{
if (y <= (y1+y2) / 2)
return 2 * v + drum(x1, y1, (x1+x2)/2, (y1+y2)/2, 2, v/4);
else
return v + drum(x1, (y1+y2)/2 + 1, (x1+x2)/2, y2, 2, v/4);
}
else
{
if (y <= (y1+y2) / 2)
return 3 * v + drum((x1+x2)/2 + 1, y1, x2, (y1+y2)/2, 1, v/4);
else
return drum((x1+x2)/2 + 1, (y1+y2)/2 + 1, x2, y2, 4, v/4);
}
}
if (k == 3)
{
if (x <= (x1+x2) / 2)
{
if (y <= (y1+y2) / 2)
return drum(x1, y1, (x1+x2)/2, (y1+y2)/2, 1, v/4);
else
return 3 * v + drum(x1, (y1+y2)/2 + 1, (x1+x2)/2, y2, 4, v/4);
}
else
{
if (y <= (y1+y2) / 2)
return v + drum((x1+x2)/2 + 1, y1, x2, (y1+y2)/2, 3, v/4);
else
return 2 * v + drum((x1+x2)/2 + 1, (y1+y2)/2 + 1, x2, y2, 3, v/4);
}
}
if (k == 4)
{
if (x <= (x1+x2) / 2)
{
if (y <= (y1+y2) / 2)
return 2 * v + drum(x1, y1, (x1+x2)/2, (y1+y2)/2, 4, v/4);
else
return 3 * v + drum(x1, (y1+y2)/2 + 1, (x1+x2)/2, y2, 3, v/4);
}
else
{
if (y <= (y1+y2) / 2)
return v + drum((x1+x2)/2 + 1, y1, x2, (y1+y2)/2, 4, v/4);
else
return drum((x1+x2)/2 + 1, (y1+y2)/2 + 1, x2, y2, 2, v/4);
}
}
return 0;
}
int main()
{double k; int q;
ifstream in("fractal.in");
ofstream out("fractal.out");
in >> k >> x >> y;
k = pow(2.0, k);
q = (int)k;
out << drum(1, 1, q, q, 1, q * q / 4) << '\n';
return 0;
}