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.