#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef int matrix[3][3];
typedef long long ll;
ll N;
int MOD;
matrix mat,Q,tmp;
void Init_matrix(){
    memset(mat,0,sizeof(mat));
    mat[0][1]=mat[0][2]=mat[1][1]=mat[1][2]=mat[2][2]=1;
    memset(Q,0,sizeof(Q));
    for(int i=0;i<3;i++)Q[i][i]=1;
}
void Mul(matrix &a,matrix &b){
    memset(tmp,0,sizeof(tmp));
    for(int i=0;i<3;i++)
        for(int k=0;k<3;k++)
            for(int j=0;j<3;j++)
                if((tmp[i][j]+=ll(a[i][k])*b[k][j]%MOD)>=MOD)
                    tmp[i][j]-=MOD;
    memcpy(a,tmp,sizeof(a));
}
void Power(matrix &a,matrix &b,ll k){
    while(k){if(k&1)Mul(a,b);k>>=1;Mul(b,b);}
}
int main(){
    scanf("%lld%d",&N,&MOD);
    int len=0,B=0,C=0;
    ll p=1;
    for(ll t=N;t;t/=10,len++);
    for(int i=1;i<len;i++){
        Init_matrix();
        mat[0][0]=(p=p*10)%MOD;
        Power(Q,mat,p-p/10);
        B=(ll(B)*Q[0][0]%MOD+ll(C)*Q[0][1]%MOD+Q[0][2])%MOD;
        C=((p%MOD)-1+MOD)%MOD;
    }
    Init_matrix();
    mat[0][0]=p*10%MOD;
    Power(Q,mat,N-p+1);
    B=(ll(B)*Q[0][0]%MOD+ll(C)*Q[0][1]%MOD+Q[0][2])%MOD;
    printf("%d\n",B);
    return 0;
}