#include<stdio.h>
int m[20][20];
int C1(int k,int x,int y)
{
if(x<=(1<<(k-1)))
if(y<=(1<<(k-1)))
return 1;
return 0;
}
int C2(int k,int x,int y)
{
if(x<=(1<<(k-1)))
if(y>(1<<(k-1)))
return 1;
return 0;
}
int C3(int k,int x,int y)
{
if(x>(1<<(k-1)))
if(y>(1<<(k-1)))
return 1;
return 0;
}
int C4(int k,int x,int y)
{
if(x>(1<<(k-1)))
if(y<=(1<<(k-1)))
return 1;
return 0;
}
int frac(int k,int x,int y)
{
// printf("%d %d %d\n",x,y,k);
if(k==0)
return 1;
if(C1(k,x,y))
{
// printf("1\n");
return frac(k-1,y,x);
}
if(C2(k,x,y))
{
// printf("2\n");
return (1<<(k-1))*(1<<(k-1))+frac(k-1,x,y-(1<<(k-1)));
}
if(C3(k,x,y))
{
// printf("3\n");
return (1<<(k-1))*(1<<(k-1))*2+frac(k-1,x-(1<<(k-1)),y-(1<<(k-1)));
}
if(C4(k,x,y))
{
// printf("4\n");
return 3*(1<<(k-1))*(1<<(k-1))+frac(k-1,(1<<(k-1))-y+1,((1<<k)-x+1));
}
}
int K,x,y,rez;
int main()
{
freopen("fractal.in","r",stdin);
freopen("fractal.out","w",stdout);
scanf("%d%d%d",&K,&x,&y);
rez=frac(K,x,y);
printf("%d\n",rez-1);
}