#include <bits/stdc++.h>
int n, k, m;
long long dp[1111][111];
long long pow10k[1111], pow10m[1111];
long long mod(long long x, long long di) {
  x = x % di;
  if (x < 0) x += di;
  return x;
}
bool input() {
  scanf("%d%d%d", &n, &k, &m);
  return 1;
}
long long dpr(int i, int r) {
  long long &res = dp[i][r];
  if (res != -1) return res;
  if (i == n) {
    return res = r ? 0 : 1 % m;
  }
  res = 0;
  for (int d = 0; d < 10; d++) {
    if (!i && !d) continue;
    int p = mod(r - d * pow10k[n - 1 - i], k);
    if (!p && !d) continue;
    long long t = p ? dpr(i + 1, p) : 1;
    res += t;
    res = mod(res, m);
  }
  return res;
}
void solve() {
  pow10k[0] = 1 % k;
  pow10m[0] = 1 % m;
  for (int i = 1; i <= n; i++) {
    pow10k[i] = pow10k[i - 1] * 10 % k;
    pow10m[i] = pow10m[i - 1] * 10 % m;
  }
  memset(dp, -1, sizeof(dp));
  long long res = 0;
  for (int i = 0; i < n; i++) {
    res += i ? dpr(i, 0) * 9 * pow10m[i - 1] : dpr(i, 0);
    res %= m;
  }
  if (res < 0) res += m;
  printf("%I64d\n", res);
}
int main() {
  input();
  solve();
  return 0;
}
