#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 9;
long long n, m, k;
long long arr[1111][111];
long long num[2][111];
long long yu[1111];
bool mark[1111];
long long sol(long long n, long long k, long long m) {
  if (n == 0) return 0;
  long long ans = 0;
  memset(arr, 0, sizeof(arr));
  for (long long i = 1; i < 10; i++) {
    if (i % k) {
      arr[0][i % k]++;
      arr[0][i % k] %= m;
    } else
      ans++;
  }
  for (long long i = 1; i < n; i++) {
    ans *= 10;
    ans %= m;
    for (long long j = 0; j < k; j++) {
      arr[i][j] = arr[i - 1][j];
    }
    for (long long j = 1; j < 10; j++) {
      long long e = yu[i] * j % k;
      for (long long d = 1; d < k; d++) {
        if ((e + d) % k) {
          arr[i][(e + d) % k] += arr[i - 1][d];
          arr[i][(e + d) % k] %= m;
        } else {
          ans += arr[i - 1][d];
          ans %= m;
        }
      }
      if (e)
        arr[i][e]++;
      else
        ans++;
    }
  }
  return ans % m;
}
int main() {
  long long a, b, c, d, e, f, g, h;
  while (cin >> n >> k >> m) {
    yu[0] = 1;
    yu[0] %= k;
    for (d = 1; d < n; d++) {
      yu[d] = yu[d - 1] * 10 % k;
    }
    g = ((sol(n, k, m) - sol(n - 1, k, m)) % m + m) % m;
    cout << g << endl;
  }
  return 0;
}
