#include <iostream>
#include <cstdio>
#include <set>
using namespace std;
typedef long long ll;
const int MOD = 30103;
int add(int a, int b)
{
a += b;
if (a >= MOD)
{
return a - MOD;
}
if (a < 0)
{
return a + MOD;
}
return a;
}
int mul(int a, int b)
{
return a * (ll) b % MOD;
}
const int N = 200 + 7;
const int K = 100 + 7;
int dp[N][N][K]; /// dp[last][len][rest]
int n, k, a, b;
string s;
int c[N], last[10];
int ans;
int main()
{
freopen ("diviz.in", "r", stdin);
freopen ("diviz.out", "w", stdout);
cin >> k >> a >> b >> s;
n = (int) s.size();
for (int i = 1; i <= n; i++)
{
c[i] = s[i - 1] - '0';
}
if (a == 1)
{
set <int> cifs;
for (int i = 1; i <= n; i++)
{
if (c[i] % k == 0)
{
cifs.insert(c[i]);
}
}
ans += (int) cifs.size();
a++;
}
for (int i = 1; i <= n; i++)
{
if (c[i] && last[c[i]] == 0)
{
dp[i][1][c[i] % k] = 1;
}
for (int len = 2; len <= b; len++)
{
for (int r = 0; r < k; r++)
{
int nr = (r * 10 + c[i]) % k;
for (int j = last[c[i]]; j < i; j++)
{
dp[i][len][nr] = add(dp[i][len][nr], dp[j][len - 1][r]);
}
}
}
last[c[i]] = i;
}
for (int i = 1; i <= n; i++)
{
for (int len = a; len <= b; len++)
{
ans = add(ans, dp[i][len][0]);
}
}
cout << ans << "\n";
return 0;
}