#include <bits/stdc++.h>
#define INFILE "fractal.in"
#define OUTFILE "fractal.out"
using namespace std;
ifstream in(INFILE);
ofstream out(OUTFILE);
int pow2(int k){
int ret = (1<<k);
return ret;
}
void flipVer(int& x, int& y, int k){
int nx(0),ny(0);
ny = pow2(k-1)+1-y;
nx=x;
x=nx;
y=ny;
}
void rot90(int& x, int& y, int k){
int nx(0),ny(0);
nx = y;
ny = pow2(k-1)+1-x;
x=nx;
y=ny;
}
void rot270(int&x,int&y,int k){
rot90(x,y,k);
rot90(x,y,k);
rot90(x,y,k);
}
void translateCoords(int &x, int &y,int cadr,int k){
int nx=x;
int ny=y;
if(cadr==1){
rot90(nx,ny,k);
flipVer(nx,ny,k);
}
else if(cadr==2){
nx-=pow2(k-1);
}
else if(cadr==3){
nx-=pow2(k-1);
ny-=pow2(k-1);
}
else if(cadr==4){
ny-=pow2(k-1);
rot270(nx,ny,k);
flipVer(nx,ny,k);
}
x=nx;
y=ny;
}
int cadran(int x,int y,int k){
bool mx=false;
bool my=false;
int thr=pow2(k-1);
if(x>thr) mx=true;
if(y>thr) my=true;
if(mx){
if(my) return 3;
return 2;
}
if(my) return 4;
return 1;
}
int nrpozinainte(int x,int y,int k){
int cdr = cadran(x,y,k);
//cout<<x<<" "<<y<<endl;
if(k==1)
return cdr-1;
translateCoords(x,y,cdr,k);
return (cdr-1)*pow2(k-1)*pow2(k-1)+nrpozinainte(x,y,k-1);
}
int main()
{
int k,y,x;
in>>k>>y>>x;
out<<nrpozinainte(x,y,k);
return 0;
}