var s:string; i,k:byte; t:word; v:array[1..10000] of byte; procedure citire; var i:byte; begin readln(t,k); for i:=1 to t do readln(v[i]); end; function scrie (a:byte):longint; var s:string; p,i,j:integer; m:longint; begin s:=''; p:=0; for i:=1 to a do begin inc(p); s[p]:='1'; for j:=1 to k do begin inc(p); s[p]:='0'; end; end; m:=0; for i:=1 to p do if s[i]='1' then m:=m*2+1 else m:=m*2+0; scrie:=m; end; begin citire; for i:=1 to t do writeln(scrie(v[i])); readln; end.