#include<bits/stdc++.h>
#define ll long long
#define reg register
#define db double
#define il inline
using namespace std;
void read(int &x){x=0;int f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=f;}
void read(ll &x){x=0;int f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=f;}
const ll N=505,mod=999911659;
ll n,p;
ll s[N],tot;
ll summ[N];
ll c[N][N];
ll dp[N][N][11];
ll inv[12];
int main(){
inv[0]=1;
inv[1]=1;
for(int i=2;i<=9;i++)inv[i]=(ll)(mod-mod/i)*inv[mod%i]%mod;
read(n);read(p);
tot=1%p;
ll l=0,len=0;
ll st=0;
if(n<=p){
for(int i=1;i<=n;i++){
st=tot;
summ[tot]++;
tot=(tot*10+1)%p;
}
}else{
for(ll i=1;i<=n;i++){
if(s[tot]){
l=s[tot];len=i-l;
break;
} else{
summ[tot]++;
s[tot]=i;
tot=(tot*10+i)%p;
}
}
for(ll i=0;i<p;i++){
if(s[i]!=0){
if(s[i]>=l){
summ[i]=1;
summ[i]=summ[i]+(n-s[i])/len%mod;
if((n-l+1)%len==(s[i]-l+1)%len)st=i;
}
}
}
}
c[0][0]=1;
for(ll i=0;i<p;i++){
c[i][0]=1;
if(!summ[i])continue;
for(ll j=1;j<=9;j++,summ[i]=(summ[i]+1)%mod){
c[i][j]=c[i][j-1]*summ[i]%mod*inv[j]%mod;
}
}
dp[0][st][0]=1;
for(ll i=0;i<p;i++){
for(ll j=0;j<p;j++){
for(ll k=0;k<9;k++){
for(ll o=0;o<9-k;o++){
dp[i+1][(j+o*i)%p][o+k]+=dp[i][j][k]*c[i][o]%mod;
dp[i+1][(j+o*i)%p][o+k]%=mod;
}
}
}
}
ll ans=0;
for(ll i=0;i<9;i++){
ans+=dp[p][0][i];
ans%=mod;
}
cout<<ans;
return 0;
}