#include <bits/stdc++.h>
using namespace std;
static vector<pair<long long, long long>> dividers;
bool check() {
  for (int i = 0; i < dividers.size(); i++) {
    if (dividers[i].second != 1) return true;
  }
  return false;
}
int main() {
  long long n, i = 2, answer = 0, ch = 1, l, max = 0;
  bool gr = false;
  cin >> n;
  l = n;
  if (n == 1) {
    cout << 1 << ' ' << 0;
    return 0;
  }
  while ((long long)sqrt(n) == sqrt(n)) {
    n = sqrt(n);
    answer++;
  }
  while (i <= sqrt(n)) {
    if (n % i == 0) {
      if (dividers.size() != 0 && dividers[dividers.size() - 1].first == i) {
        dividers[dividers.size() - 1].second++;
        if (dividers[dividers.size() - 1].second > max)
          max = dividers[dividers.size() - 1].second;
      } else {
        dividers.push_back(make_pair(i, 1));
        ch *= dividers[dividers.size() - 1].first;
      }
      n /= i;
      continue;
    }
    i++;
  }
  if (dividers.size() != 0 && dividers[dividers.size() - 1].first == n) {
    dividers[dividers.size() - 1].second++;
    if (dividers[dividers.size() - 1].second > max)
      max = dividers[dividers.size() - 1].second;
  } else {
    dividers.push_back(make_pair(n, 1));
    ch *= n;
  }
  if (dividers[0].first == l) {
    cout << l << ' ' << 0;
    return 0;
  }
  long long a = 1;
  while (a < max) {
    a <<= 1;
    answer++;
  }
  if (max > 1) answer++;
  cout << ch << ' ' << answer;
  return 0;
}
