18 lines
440 B
ObjectPascal

program drop;
var i,z,k,d,j:longint;
bo:array[0..800000]of boolean;
begin
assign(input,'drop.in');reset(input);
assign(output,'drop.out');rewrite(output);
readln(d,i);
fillchar(bo,sizeof(bo),#0);
for k:=1 to i do
begin
z:=1;
for j:=1 to d-1 do
if bo[z] then begin bo[z]:=false;z:=z*2+1;end
else begin bo[z]:=true;z:=z*2;end;
end;
writeln(z);
close(input);close(output);
end.