#include <fstream>
using namespace std;
int f(int k, int lin, int col, int ok)
{
if (k == 0)
return 0;
int lat = (1 << (k - 1));
int nr = (1 << (2 * (k - 1)));
if (ok == 1) //original
{
if (lin <= lat and col <= lat) //1
return f(k - 1, lin, col, 3);
if (lin > lat and col <= lat)//2
return f(k - 1, lin - lat, col, 1) + nr;
if (lin > lat and col > lat)//3
return f(k - 1, lin - lat, col - lat, 1) + 2 * nr;
return f(k - 1, lin, col - lat, 2) + 3 * nr; //4
}
else if (ok == 2) //orientat spre dreapta
{
//3, 2, 1, 4
if (lin > lat and col > lat)//3
return f(k - 1, lin - lat, col - lat, 4);
if (lin > lat and col <= lat)//2
return f(k - 1, lin - lat, col, 2) + nr;
if (lin <= lat and col <= lat) //1
return f(k - 1, lin, col, 2) + 2 * nr;
return f(k - 1, lin, col - lat, 1) + 3 * nr;
}
else if (ok == 3) //orientat spre stanga
{
//1, 4, 3, 2
if (lin <= lat and col <= lat) //1
return f(k - 1, lin, col, 1);
if (lin <= lat and col > lat)//4
return (k - 1, lin, col - lat, 3) + nr;
if (lin > lat and col > lat)//3
return f(k - 1, lin - lat, col - lat, 3) + 2 * nr;
return f(k - 1, lin - lat, col, 4) + 3 * nr;
}
else //orientat in jos
{
//3, 4, 1, 2
if (lin > lat and col > lat)//3
return f(k - 1, lin - lat, col - lat, 2);
if (lin <= lat and col > lat)//4
return f(k - 1, lin, col - lat, 4) + nr;
if (lin <= lat and col <= lat) //1
return f(k - 1, lin, col, 4) + 2 * nr;
return f(k - 1, lin - lat, col, 3) + 3 * nr;
}
}
int main()
{
ifstream cin("fractal.in");
ofstream cout("fractal.out");
int k, x, y;
cin >> k >> y >> x;
cout << f(k, x, y, 1);
}