#include <bits/stdc++.h>
using namespace std;
const int inf_int = 1 << 30;
const long long inf_longlong = 1LL << 62;
const long long MOD = 1e9 + 7;
const int N = 1e5 + 5;
long long q;
void read_input() { cin >> q; }
bool is_prime(long long x) {
  for (long long i = 2; i * i <= x; i++)
    if (x % i == 0) return false;
  return x != 1;
}
void solve() {
  map<long long, long long> prime_factors;
  if (is_prime(q) || q == 1) {
    cout << 1 << ' ' << 0;
    return;
  }
  for (long long i = 2; i * i <= q; i++) {
    if (q % i) continue;
    if (is_prime(i)) {
      int cnt = 0;
      long long n = q;
      while (n % i == 0) n /= i, cnt++;
      prime_factors[i] += cnt;
    }
    if (is_prime(q / i) && i * i != q) {
      int cnt = 0;
      long long n = q;
      while (n % (q / i) == 0) n /= q / i, cnt++;
      prime_factors[q / i] += cnt;
    }
  }
  int cnt = 0;
  for (auto it : prime_factors) cnt += it.second;
  pair<long long, long long> P1 = *prime_factors.begin(),
                             P2 = *(++prime_factors.begin());
  long long prime1, prime2;
  if (P1.second == 1)
    prime1 = P1.first, prime2 = P2.first;
  else
    prime1 = prime2 = P1.first;
  if (cnt < 3 || prime1 * prime2 == q) {
    cout << 2;
  } else {
    cout << 1 << ' ' << prime1 * prime2;
  }
}
void write_output() {}
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  int t = 1;
  while (t--) {
    read_input(), solve(), write_output();
  }
  return 0;
}
