program fractal;
const doi:array[0..18] of longint=(1,2,4,8,16,32,64,
128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144);
lung:array[1..15] of longint=(3,15,63,255,1023,4095,16383,65535,
262143,1048575,4194303,16777215,67108863,268435455,1073741823);
var k,x,y:longint;
procedure citire;
var f:text;
begin
assign(f,'fractal.in');
reset(f);
readln(f,k,y,x);
close(f);
end;
function frac(x,y,k:longint):longint;
begin
if k=1 then
if x=1 then
if y=1 then frac:=0
else frac:=3
else
if y=1 then frac:=1
else frac:=2
else
begin
if x<=doi[k-1] then
if y<=doi[k-1] then
frac:=lung[k-1]-frac(y,doi[k-1]-x+1,k-1)
else
frac:=lung[k]-frac(doi[k]-y+1,x,k-1)
else
if y<=doi[k-1] then
frac:=lung[k-1]+1+frac(x-doi[k-1],y,k-1)
else frac:=2*(lung[k-1]+1)+frac(x-doi[k-1],y-doi[k-1],k-1);
end;
end;
procedure afisare;
var f:text;
begin
assign(f,'fractal.out');
rewrite(f);
writeln(f,frac(x,y,k));
close(f);
end;
begin
citire;
afisare;
{ writeln(trunc((doi[2]-1)div 2));
writeln(doi[1]+1);}
end.