#include <bits/stdc++.h>
using namespace std;
bool esPrimo[3200000];
int cantPrimos;
long long primos[3200000];
void criba() {
  memset(esPrimo, true, sizeof(esPrimo));
  for (int i = 1; i < 3200000; i++) esPrimo[i] = true;
  for (int i = 4; i <= 3200000; i += 2) esPrimo[i] = false;
  cantPrimos = 1;
  primos[0] = 2;
  for (int i = 3; i < 3200000; i += 2) {
    if (esPrimo[i] == true) {
      primos[cantPrimos++] = i;
      for (int j = i * 2; j <= 3200000; j += i) esPrimo[j] = false;
    }
  }
}
long long factorizar(long long N) {
  long long resul = 1;
  long long aux = N;
  long long cantFactores = 0;
  long long ult, anteult;
  for (long long i = 0; primos[i] <= sqrt(N) && aux > 1 && cantFactores < 3;
       i++) {
    while (aux % primos[i] == 0 && cantFactores < 3) {
      aux /= primos[i];
      anteult = ult;
      ult = primos[i];
      resul *= aux;
      cantFactores++;
    }
  }
  if (cantFactores == 0) {
    printf("1\n0\n");
    return 0L;
  }
  if (aux > 1) {
    cantFactores++;
  }
  if (cantFactores > 2) {
    printf("1\n%lld\n", ult * anteult);
  } else if (cantFactores > 0) {
    printf("2\n");
  }
}
int main() {
  criba();
  long long N;
  scanf("%lld", &N);
  factorizar(N);
}
