#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pll = pair<ll, ll>;
using pii = pair<int, int>;
const int MOD = 1e9 + 7;
const int MAX = 1e5 + 5;
const ll INF = 1e18 + 1;
void err(...) {}
template <typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
  for (auto i : *it) cerr << i;
  cerr << " = " << a << "\n";
  err(++it, args...);
}
template <class Ch, class Tr, class Container>
basic_ostream<Ch, Tr>& operator<<(basic_ostream<Ch, Tr>& os,
                                  Container const& x) {
  os << "{ ";
  for (auto& y : x) os << y << " ";
  return os << "}";
}
template <class X, class Y>
ostream& operator<<(ostream& os, pair<X, Y> const& p) {
  return os << "[" << p.first << " : " << p.second << "]";
}
void primeFactors(vector<ll>& v, ll n) {
  for (ll i = 2; i <= sqrt(n); i++)
    while (n % i == 0) {
      v.emplace_back(i);
      n /= i;
    }
  if (n > 2) v.emplace_back(n);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ll n;
  cin >> n;
  vector<ll> pr;
  primeFactors(pr, n);
  if (pr.empty()) {
    cout << 1 << "\n" << 0 << "\n";
    return 0;
  }
  if (pr.back() == n) pr.pop_back();
  if (pr.empty()) {
    cout << 1 << "\n" << 0 << "\n";
    return 0;
  }
  if (pr.size() == 2)
    cout << 2;
  else {
    cout << 1 << "\n";
    cout << pr[0] * pr.back();
  }
  return 0;
}
