#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("sse4")
using namespace std;
template <class T>
T gcd(T a, T b) {
  return ((b == 0) ? a : gcd(b, a % b));
}
int dp[1005][100][2][2];
int powt[1005];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n, k, m;
  cin >> n >> k >> m;
  dp[0][0][0][0] = 1;
  powt[0] = 1LL;
  for (int i = (int)(1); i < (int)(1005); i++) powt[i] = (10 * powt[i - 1]) % k;
  for (int i = (int)(1); i < (int)(n + 1); i++) {
    for (int j = (int)((i == n ? 1 : 0)); j < (int)(10); j++) {
      for (int l = 0; l < (int)(100); l++) {
        int tot = (l + (powt[i - 1] * j)) % k;
        (dp[i][tot][1][1] += dp[i - 1][l][1][1]) %= m;
        if (!tot) {
          if (j)
            (dp[i][tot][1][1] += dp[i - 1][l][0][0]) %= m;
          else
            (dp[i][tot][0][0] += dp[i - 1][l][0][0]) %= m;
          (dp[i][tot][1][1] += dp[i - 1][l][0][1]) %= m;
        } else {
          if (j) (dp[i][tot][0][1] += dp[i - 1][l][0][0]) %= m;
          (dp[i][tot][0][1] += dp[i - 1][l][0][1]) %= m;
        }
      }
    }
  }
  int ans = 0;
  for (int i = 0; i < (int)(k); i++) (ans += dp[n][i][1][1]) %= m;
  cout << ans << endl;
  return 0;
}
