#include <cstdio>
int K,x,y;
void rotire(int k, int x0, int y0, int& x, int& y)
{
int xb=x;
x = x0 + (y-y0);
y = y0 + (x0 + (1<<k) - 1 - xb);
}
void oglinda(int k, int x0, int y0, int& x, int& y)
{
y = y0 + ( y0 + (1<<k) - 1 - y);
}
int steps(int k, int x0, int y0, int x, int y)
{
if(k==1)
{
if(x0==x && y0==y) return 0;
else if(x==x0+1 && y0==y) return 1;
else if(x==x0+1 && y==y0+1) return 2;
else return 3;
}
if(x >= x0+(1<<k-1) && y >= y0+(1<<k-1) ) return (1<<k-1)*(1<<k-1)*2 + steps(k-1, x0+(1<<k-1), y0+(1<<k-1), x, y);
else if( x >= x0+(1<<k-1) && y < y0+(1<<k-1) ) return (1<<k-1)*(1<<k-1) + steps(k-1, x0+(1<<k-1), y0, x, y);
else if( x < x0+(1<<k-1) && y < y0+(1<<k-1) )
{
int xb,yb;
xb = x0;
yb = y0;
rotire(k-1,xb,yb,x0,y0);
rotire(k-1,xb,yb,x,y);
oglinda(k-1,xb,yb,x0,y0);
oglinda(k-1,xb,yb,x,y);
return steps(k-1, x0, y0, x, y);
}
else
{
int xb,yb;
xb = x0;
yb = y0 + (1<<k-1);
x0 = x0 + (1<<k-1) - 1;
y0 = y0 + (1<<k) - 1;
rotire(k-1,xb,yb,x0,y0);
rotire(k-1,xb,yb,x0,y0);
rotire(k-1,xb,yb,x0,y0);
rotire(k-1,xb,yb,x,y);
rotire(k-1,xb,yb,x,y);
rotire(k-1,xb,yb,x,y);
oglinda(k-1,xb,yb,x0,y0);
oglinda(k-1,xb,yb,x,y);
return (1<<k-1)*(1<<k-1)*3 + steps(k-1, x0, y0, x, y);
}
}
int main(){
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
scanf("%d %d %d",&K,&y,&x);
printf("%d\n", steps(K,1,1,x,y) );
return 0;
}