#include <bits/stdc++.h>
using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
int n,m,nr;
int v[5];
int fir(int xSus,int ySus,int xJos,int yJos,int x,int y,int k)
{
// 1 4
// 2 3
if(xSus==xJos)// 1 pe 1
return 1;
int mijX,mijY,z;
z=(1<<(2*(k-1)));
mijX=(xSus+xJos)/2;
mijY=(ySus+yJos)/2;
if(mijX<x)
{
if(mijY<y)
{
//3
v[1]=1;
v[2]=2;
v[3]=3;
v[4]=4;
g<<k<<" "<<3<<'\n';
return (v[3]-1)*z+fir(mijX+1,mijY+1,xJos,yJos,x,y,k-1);
}
else
{
//4;
v[1]=3;
v[2]=2;
v[3]=1;
v[4]=4;
g<<k<<" "<<4<<'\n';
return (v[4]-1)*z+fir(mijX+1,ySus,xJos,mijY,x,y,k-1);
}
}
else
{
if(mijY<y)
{
//2
v[1]=1;
v[2]=2;
v[3]=3;
v[4]=4;
g<<k<<" "<<2<<'\n';
return (v[2]-1)*z+fir(xSus,mijY+1,mijX,yJos,x,y,k-1);
}
else
{
//1;
v[1]=1;
v[2]=4;
v[3]=3;
v[4]=2;
g<<k<<" "<<1<<'\n';
return (v[1]-1)*z+fir(xSus,ySus,mijX,mijY,x,y,k-1);
}
}
}
// 1 4
// 2 3
int sir(int k,int x,int y)
{
int z=(1<<(k-1));
if(k==1)
{
if(x==1 and y==2)
return 2;
return x+y-1;
}
if(z<x and z<y)//3
return 2*z*z+sir(k-1,x,y);
if(z<x and z>=y)//4
return 3*z*z+sir(k-1,z-y+1,z-x+1);
if(z>=x and z<y)//2
return z*z+sir(k-1,x,y);
// if(z>=x and z>=y)
return sir(k-1,y,x);
}
int main()
{
//ios_base::sync_with_stdio(0);
//f.tie(0);
//g.tie(0);
int x,y,z;
f>>n>>x>>y;
v[1]=1;
v[2]=2;
v[3]=3;
v[4]=4;
// swap(x,y);
// g<<fir(1,1,(1<<n),(1<<n),x,y,n)-1;
g<<sir(n,x,y)-1;
return 0;
}