#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll mm,mod;
struct matran{
    ll a[2][2];
    void print(){
            for(ll i=0;i<2;i++){
                    for(ll j=0;j<2;j++) cout<<a[i][j]<<" ";
                    cout<<'\n';
            }
    }
};
matran mot;
struct cap{
   ll u,u_plus_1;
   void print(){
           cout<<u<<" "<<u_plus_1<<'\n';
   }
};
ll f(ll a,ll n, ll MOD){
        ll res=a,ans=0;
        while(n){
                if(n%2) ans = (ans+res)%MOD;
                res=(res+res)%MOD;
                n/=2;
        }
        return ans;
}
ll po1(ll a,ll n, ll MOD){
        ll res=a,ans=1;
        while(n){
                if(n%2) ans=ans*res%MOD;
                res=res*res%MOD;
                n/=2;
        }
        return ans;
}
matran prod(matran A,matran B){
        matran anss;
        anss.a[0][0]=(f(A.a[0][0],B.a[0][0],mod) + f(A.a[0][1],B.a[1][0],mod))%mod;
        anss.a[0][1]=(f(A.a[0][0],B.a[0][1],mod) + f(A.a[0][1],B.a[1][1],mod))%mod;
        anss.a[1][0]=(f(A.a[1][0],B.a[0][0],mod) + f(A.a[1][1],B.a[1][0],mod))%mod;
        anss.a[1][1]=(f(A.a[1][0],B.a[0][1],mod) + f(A.a[1][1],B.a[1][1],mod))%mod;
        return anss;
}
matran po(matran X,ll n){
        matran res = X, ans = mot;
        while(n){
                if(n%2) ans = prod(ans,res);
                res = prod(res,res);
                n/=2;
        }
        return ans;
}
cap prod1(cap pp, matran X){
        cap ans;
        ans.u = (f(pp.u,X.a[0][0],mod)+f(pp.u_plus_1,X.a[1][0],mod))%mod;
        ans.u_plus_1 =  (f(pp.u,X.a[1][0],mod)+f(pp.u_plus_1,X.a[1][1],mod))%mod;
        return ans;
}
int main(){
        // freopen("lala.inp","r",stdin);
        // freopen("lala.out","w",stdout);

        ll a,b,nn,xx,testcase;
        // cin>>testcase;
        testcase = 1;
        for(ll qq=1;qq<=testcase;qq++){
        //  cin>>a>>b;
        cin>>xx>>nn>>mm;
        mod = mm;
        ll p,q,len;
        len = to_string(xx).size();
        p=po1(10,len,mm);
        q=xx%mm;
        cap init;
        init.u = q;
        init.u_plus_1 = 1;
        matran M;
        M.a[0][0]=p;
        M.a[0][1]=0;
        M.a[1][0]=q;
        M.a[1][1]=1;
        mot.a[0][0]=1;
        mot.a[0][1]=0;
        mot.a[1][0]=0;
        mot.a[1][1]=1;
       
        matran res = po(M,nn-1);
        cap ansss = prod1(init,res);
        cout<<ansss.u<<'\n';
   
        }

}