#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
int B;
string Y;
int memo[100001];
int DP(int now) {
if(now == Y.size()) return 1;
if(memo[now] != -1) return memo[now];
int running = Y[now]-'0', ans = 0;
if(running == 0)
return memo[now] = DP(now+1);
for(int i = 1; running < B && now+i <= Y.size(); i++) {
ans = (ans+DP(now+i))%MOD;
running = running*10 + (Y[now+i]-'0');
// cout << running << " ";
}
return memo[now] = ans;
}
int main() {
while(cin >> B >> Y) {
memset(memo, -1, sizeof(memo));
// check validity
cout << DP(0) << endl;
/*
for(int i = 0; i < Y.size(); i++)
cout << memo[i] << " ";
cout << endl;
/**/
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBNT0QgPSAxMDAwMDAwMDA3OwoKaW50IEI7CnN0cmluZyBZOwppbnQgbWVtb1sxMDAwMDFdOwoKaW50IERQKGludCBub3cpIHsKCWlmKG5vdyA9PSBZLnNpemUoKSkgcmV0dXJuIDE7CglpZihtZW1vW25vd10gIT0gLTEpIHJldHVybiBtZW1vW25vd107CglpbnQgcnVubmluZyA9IFlbbm93XS0nMCcsIGFucyA9IDA7CglpZihydW5uaW5nID09IDApCgkJcmV0dXJuIG1lbW9bbm93XSA9IERQKG5vdysxKTsKCWZvcihpbnQgaSA9IDE7IHJ1bm5pbmcgPCBCICYmIG5vdytpIDw9IFkuc2l6ZSgpOyBpKyspIHsKCQlhbnMgPSAoYW5zK0RQKG5vdytpKSklTU9EOwoJCXJ1bm5pbmcgPSBydW5uaW5nKjEwICsgKFlbbm93K2ldLScwJyk7CgkJLy8gY291dCA8PCBydW5uaW5nIDw8ICIgIjsKCX0KCXJldHVybiBtZW1vW25vd10gPSBhbnM7Cn0KCmludCBtYWluKCkgewoJd2hpbGUoY2luID4+IEIgPj4gWSkgewoJCW1lbXNldChtZW1vLCAtMSwgc2l6ZW9mKG1lbW8pKTsKCQkvLyBjaGVjayB2YWxpZGl0eQoJCWNvdXQgPDwgRFAoMCkgPDwgZW5kbDsKCQkvKgoJCWZvcihpbnQgaSA9IDA7IGkgPCBZLnNpemUoKTsgaSsrKQoJCQljb3V0IDw8IG1lbW9baV0gPDwgIiAiOwoJCWNvdXQgPDwgZW5kbDsKCQkvKiovCgl9CglyZXR1cm4gMDsKfQ==