#include <bits/stdc++.h>
using namespace std;
template <typename T>
T gcd(T a, T b) {
  return (b == 0) ? abs(a) : gcd(b, a % b);
}
template <typename T>
inline T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <typename T>
inline T mod(T a, T b) {
  a %= b;
  if (a < 0) a += b;
  return a;
}
template <typename T>
inline T sqr(T x) {
  return x * x;
}
template <typename T>
inline T gmax(T a, T b) {
  return (a > b ? a : b);
}
template <typename T>
inline T gmin(T a, T b) {
  return (a < b ? a : b);
}
int dgt[10];
void todgt(long long n) {
  int i;
  for (i = 8; i >= 0; i--) {
    dgt[i] = n % 10;
    n /= 10;
  }
  return;
}
int main() {
  long long a, b, m;
  long long i;
  cin >> a >> b >> m;
  if (b >= m) {
    cout << 2 << endl;
    return 0;
  }
  long long v = 1;
  for (i = 0; i < (9); i++) v *= 10, v %= m;
  if (!v) {
    cout << 2 << endl;
    return 0;
  }
  for (i = (1); i <= (m); i++) {
    if (i > a) {
      cout << 2 << endl;
      return 0;
    }
    if (((v * i) % m) && (((v * i) % m) < (m - b))) {
      break;
    }
  }
  if (i == m + 1) {
    cout << 2 << endl;
    return 0;
  }
  todgt(i);
  cout << 1 << " ";
  for (i = 0; i < (9); i++) cout << dgt[i];
  cout << endl;
  return 0;
}
