{
TASK: digits
LANG: PASCAL
}
const
 maxx = 1000;
var
 r ,br ,k ,i,count,m : longint;
 ch,ch1 : char;
 a  : array[0..maxx] of char;
 p  : array[0..maxx] of longint;
procedure vhod;
begin
   readln(r,m,k);
   for i:=1 to r do
   begin
      read(ch);
      if ord(ch)<60 then
      p[r-i+1]:=ord(ch)-48
      else
      p[r-i+1]:=ord(ch)-55;
   end;
end;
procedure decrease;
var
 i : longint;
begin
   i:=1;
   dec(p[1]);
   while (p[i]<0)and(i<br) do
   begin
      p[i]:=k-1;
      inc(i);
      dec(p[i]);
   end;
   if p[br]=0 then dec(br);
end;

procedure main;
begin
   br:=r;
   repeat
     for i:=1 to br do if p[i]=m then inc(count);
     decrease;
   until br=0;
end;
procedure izhod;
var
 l,x : longint;
begin
   l:=0;
   while count<>0 do
   begin
      x:=count mod k;
      count:=count div k;
      inc(l);
      if x<=9 then a[l]:=chr(48+x)
      else a[l]:=chr(55+x);
   end;
   for i:=l downto 2 do
   write(a[i]);
   writeln(a[1]);
end;
begin
   vhod;
   main;
   izhod;
end.