
/*
TASK: digits
LANG: C
*/

#include<stdio.h>

#define MAXN 1000

int r,k,i,j,m,br=0;
char t;
int pred[2][MAXN]={0};
int sled[MAXN]={0};
int kr[MAXN]={0};
int seq[MAXN]={0};

int main(){
//    freopen("dig.in","rt",stdin);
    scanf("%d %d %d",&r,&m,&k);
    getchar();
    for (i=0;i<r;i++){
        scanf("%c",&t);
        if ('A'<=t&&t<='Z')
           seq[i]=t+10-'A';
        else {
             seq[i]=t-'0';
             }
        }
    for (i=0;i<r;i++){
        pred[0][i]+=1;
        if (seq[i]>m){
              pred[1][i]+=1;
           }
        else
            if (seq[i]==m){
               sled[i]+=1;
               br++;
               }
        }

    for (i=1;i<r;i++){
        sled[i]+=sled[i-1];
        pred[0][r-i-1]+=pred[0][r-i];
        }

    for (i=0;i<r;i++){
        if (!i)
           if (seq[0]<m)
              kr[i]=0;
              else
                  kr[i]=1;
        else {
             kr[i]+=pred[0][i]*seq[i-1];
             kr[i]+=pred[1][i];
             }
        if (sled[i])
           if (i)
              if (seq[i]>m)
                 kr[i]+=sled[i]*seq[i];
        }


    kr[r-1]+=br;
    for (i=r-1;i>-1;i--)
        if (kr[i]>=k)
           {
           kr[i-1]+=kr[i]/k;
           kr[i]%=k;
           }
    if (!m){
       for (i=0;i<r;i++)
           kr[i]--;
       for (i=r-1;i>-1;i--)
           if (kr[i]<0){
              kr[i-1]--;
              kr[i]+=k;
              }
       }
    i=0;
    while (!kr[i]) i++;
    for (;i<r;i++)
        if (kr[i]<10)
           printf("%c",kr[i]+'0');
        else
            printf("%c",kr[i]-10+'A');
    printf("\n");
    return 0;
    }

