#include <cstdio>
#include <cstdlib>
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define IN "fractal.in"
#define OUT "fractal.out"
#define II inline
int C[32],K,X,Y;
II void scan()
{
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
scanf("%d%d%d", &K,&Y,&X);
FOR(i,1,K) C[i] = 4 * C[i-1] + 3;
}
II void rotate90(int &X,int &Y,int Xmax,int Ymax,int semn)
{
int x = X,y = Y;
if(semn == -1)
{
X = Ymax - y + 1;
Y = x;
}
else
{
X = y;
Y = Xmax - x + 1;
}
}
II int solve(int K,int X,int Y,int rez)
{
if(K == 1)
{
if(X == 1 &&Y == 1)
return rez;
else if(X == 2 && Y == 1)
return rez + 1;
else if(X == 2 && Y == 2)
return rez + 2;
else
return rez + 3;
}
--K;
if(X <= (1<<K) && Y <= (1<<K) )
{
//rotate -90
rotate90(X,Y,1<<K,1<<K,1);
return C[K] - solve(K,X,Y,rez);
}
if(Y <= (1<<K))
return C[K] + 1 + solve(K,X - (1<<K),Y,rez);
if(X > (1<<K))
return C[K] * 2 + 2 + solve(K,X - (1<<K),Y - (1<<K),rez);
//rotate +90
rotate90(X,Y -= (1<<K),1<<K,1<<K,-1);
return C[K] * 3 + 3 + C[K] - solve(K,X,Y,rez);
}
int main()
{
scan();
printf("%d\n",solve(K,X,Y,0) );
}