/*
TASK: digits
LANG: C
*/
#include <stdio.h>
#include <stdlib.h>

 int a[1000102];
 int b[1000102];
 int c[1000102];
 char s[1000102];
 int n,m,k;

 int digit(char ch)
  {
   if (ch<='9') return ch-'0';
   return ch-'A'+10;
  }

 int main ()
  {
   int i,j,o;
   scanf("%d%d%d",&n,&m,&k);
   gets(s);
   gets(s);   
   if (n==1)
    {
     if (m<=digit(s[0]) && m!=0)
      printf("1\n");
       else
        printf("0");
     return 0;
    }
// sum all
   for (i=1;i<=n;i++)   
    a[i]=digit(s[i-1]);
   for (o=1,i=n+30;i>30;i--,o++)
    {
     c[i]+=(m!=0);
     c[i-1]+=(c[i]+a[i-31]*o)/k;
     c[i]=(c[i]+a[i-31]*o)%k;
    }
   for (i=31;i>=0;i--)
    {
     c[i-1]+=c[i]/k;
     c[i]%=k;
    }
// rem -1
   for (i=n,o=n+30;i>=1;i--,o--)
    if (a[i]<=m)
     c[o]--;
   for (i=n+30;i>0;i--)
    if (c[i]<0)
     {
      c[i-1]-=(abs(c[i])-1)/k+1;
      c[i]=(k-abs(c[i])%k)%k;
     }
// add =
   for (i=1;i<=n;i++)
    b[i+1]+=b[i]+(a[i]==m);
   for (i=n+30;i>30;i--)
    {
     c[i-1]+=(c[i]+a[i-30]*b[i-30])/k;
     c[i]=(c[i]+a[i-30]*b[i-30])%k;
    }
   c[30+n]+=b[n+1];
   for (i=30+n;i>=0;i--)
    {
     c[i-1]+=c[i]/k;
     c[i]%=k;
    }
   i=0;
   while (i<n+30 && c[i]==0) i++;
   for (j=i;j<=n+30;j++)
    if (c[j]<=9)
     printf("%d",c[j]);
      else
       printf("%c",(char)(c[j]-10+'A'));
   printf("\n");
   return 0;
  }
