#include #include #include using namespace std; constexpr long long MOD = 1000000007; long long calc(string& s, int p){ vector> dp(800, vector(16, 0)); vector> dp_(800, vector(16, 0)); dp[0][0] = 1; int sz = s.size(); for(int i=0; ik) continue; int a_ = a | (d=MOD) dp_[j_][s_]-=MOD; } } } swap(dp,dp_); } long long ret = 0; for(int j=1; j=MOD) ret-=MOD; } return ret; } int main(){ string a,b; int p; cin >> a >> b >> p; long long ans = calc(b, p); ans = (ans - calc(a,p) + MOD) % MOD; int x=0; int y=0; int z=0; for(auto c:a){ int k = c-'0'; x = (x+k)%3; y |= k==3; z = (z*10+k)%p; } if((x==0 || y==1) && z!=0){ ans++; ans %= MOD; } cout << ans << endl; return 0; }