#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N = 1e6 + 5;
int b;
string y;
int dp[N]; //Menyimpan banyaknya kemungkinan [0, i]
const int mod = 1e9 + 7;
/*
Lompatan rekursi kita itu bakal sampai n (length dari y)
Kalau kita sudah mencapai tujuan kita artinya ini merupakan solusi valid
*/
/*
ll knapsack(int cur, int weight) {
int skip = knapsack(cur + 1, weight);
int take = knapsack(cur + 1, weight - h[cur]) + val[cur];
}
*/
int rec(int cur) {
if (cur >= y.length()) {
return 1;
}
if (dp[cur] != -1) return dp[cur];
int ans = rec(cur + 1);
int m = y.length() - cur;
for (int i = 2; i <= m && y[cur] != '0'; i++) {
string tmp = y.substr(cur, i);
ll cmp = stoll(tmp);
if (cmp < b) {
(ans += rec(cur + i)) %= mod;
} else {
break;
}
}
dp[cur] = ans;
return dp[cur];
}
int main() {
cin.tie(0) -> sync_with_stdio(false), cout.tie(0);
cin >> b >> y;
bool ok = 1;
memset(dp, -1, sizeof dp);
for (auto c : y) {
if (c - '0' >= b) {
ok = 0;
}
}
if (ok) {
cout << rec(0) << '\n';
} else {
cout << "0\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKY29uc3QgaW50IE4gPSAxZTYgKyA1OwppbnQgYjsKc3RyaW5nIHk7CmludCBkcFtOXTsgLy9NZW55aW1wYW4gYmFueWFrbnlhIGtlbXVuZ2tpbmFuIFswLCBpXQpjb25zdCBpbnQgbW9kID0gMWU5ICsgNzsKLyoKTG9tcGF0YW4gcmVrdXJzaSBraXRhIGl0dSBiYWthbCBzYW1wYWkgbiAobGVuZ3RoIGRhcmkgeSkKS2FsYXUga2l0YSBzdWRhaCBtZW5jYXBhaSB0dWp1YW4ga2l0YSBhcnRpbnlhIGluaSBtZXJ1cGFrYW4gc29sdXNpIHZhbGlkCiovCgovKgpsbCBrbmFwc2FjayhpbnQgY3VyLCBpbnQgd2VpZ2h0KSB7CiAgICBpbnQgc2tpcCA9IGtuYXBzYWNrKGN1ciArIDEsIHdlaWdodCk7CiAgICBpbnQgdGFrZSA9IGtuYXBzYWNrKGN1ciArIDEsIHdlaWdodCAtIGhbY3VyXSkgKyB2YWxbY3VyXTsKfQoqLwoKaW50IHJlYyhpbnQgY3VyKSB7CiAgICBpZiAoY3VyID49IHkubGVuZ3RoKCkpIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGlmIChkcFtjdXJdICE9IC0xKSByZXR1cm4gZHBbY3VyXTsKICAgIGludCBhbnMgPSByZWMoY3VyICsgMSk7CiAgICBpbnQgbSA9IHkubGVuZ3RoKCkgLSBjdXI7CiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBtICYmIHlbY3VyXSAhPSAnMCc7IGkrKykgewogICAgICAgIHN0cmluZyB0bXAgPSB5LnN1YnN0cihjdXIsIGkpOwogICAgICAgIGxsIGNtcCA9IHN0b2xsKHRtcCk7CiAgICAgICAgaWYgKGNtcCA8IGIpIHsKICAgICAgICAgICAgKGFucyArPSByZWMoY3VyICsgaSkpICU9IG1vZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBkcFtjdXJdID0gYW5zOwogICAgcmV0dXJuIGRwW2N1cl07Cn0KCmludCBtYWluKCkgewogICAgY2luLnRpZSgwKSAtPiBzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjb3V0LnRpZSgwKTsKICAgIGNpbiA+PiBiID4+IHk7CiAgICBib29sIG9rID0gMTsKICAgIG1lbXNldChkcCwgLTEsIHNpemVvZiBkcCk7CiAgICBmb3IgKGF1dG8gYyA6IHkpIHsKICAgICAgICBpZiAoYyAtICcwJyA+PSBiKSB7CiAgICAgICAgICAgIG9rID0gMDsKICAgICAgICB9CiAgICB9CiAgICBpZiAob2spIHsKICAgICAgICBjb3V0IDw8IHJlYygwKSA8PCAnXG4nOwogICAgfSBlbHNlIHsKICAgICAgICBjb3V0IDw8ICIwXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0=