#include <bits/stdc++.h>
using namespace std;
long long n;
const int N = 4e6;
const int M = N / 4;
bool isPrime[N];
int psz = 0;
int p[M];
int main() {
  scanf("%I64d", &n);
  long long qn = sqrt((double)n) + 1;
  fill(isPrime, isPrime + qn + 1, true);
  for (long long i = 2; i * i <= qn; ++i) {
    if (isPrime[i]) {
      for (long long j = i * i; j <= qn; j += i) {
        isPrime[j] = false;
      }
    }
  }
  for (int i = 2; i <= qn; ++i) {
    if (isPrime[i]) {
      p[psz++] = i;
    }
  }
  long long nn = n;
  vector<long long> res;
  for (int i = 0; i < psz; ++i) {
    while (p[i] < n && (n % p[i]) == 0) {
      n /= p[i];
      res.push_back(p[i]);
    }
  }
  if (n != 1 && n != nn) {
    res.push_back(n);
  }
  int cnt = res.size();
  if (cnt == 0) {
    printf("1\n0");
  } else if (cnt == 2) {
    printf("2");
  } else {
    printf("1\n%I64d", res[0] * res[1]);
  }
  return 0;
}
