#include using namespace std; typedef long long ll; typedef pair pll; #define For(i, a, n) for(ll i=a;i pairoperator+(const pair&a, const pair&b){ return {a.first + b.first, a.second + b.second}; } template ostream&operator<<(ostream&os, const pair&p){ return os<<"("< basic_ostream&operator<<(basic_ostream&os, const C&c){ for(auto i=begin(c);i!=end(c);++i){ os<<(i==begin(c)?"":" ")<<*i; } return os; } template void dbg(Args&&... args){ ((cerr<>k>>p; vec m(k); m[0] = 1; For(i, 1, k)m[i] = (m[i-1]*10)%p; // dbg(m); ll ans = 1; vec> dp(2, vec(p)); For(l, 1, k+1){ ll minca = m[0] + m[l-1]; if(l == 1)minca/=2; vecdp1(p); For(nas, 1, 10){ For(i, 0, p){ ll ind =(i+minca*nas)%p; dp1[ind] += dp[l%2][i]; dp1[ind]%=mod; } dp1[(minca*nas)%p] = (dp1[(minca*nas)%p] + 1)%mod; } ans += dp1[0]; ans %= mod; For(i, 0, p){ dp1[i] =(dp1[i] + dp[l%2][i])%mod; } vecdp2(p); For(i, 0, p){ dp2[(i*10)%p] =(dp2[(i*10)%p] + dp1[i])%mod; } dp[l%2] = dp2; } cout<sync_with_stdio(0); cin.exceptions(cin.failbit); ll t = 1;//cin>>t; while(t--)solve(); }