#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
void self_max(long long& a, const long long& b) { a = max(a, b); }
void self_min(long long& a, const long long& b) { a = min(a, b); }
inline void preprocessing() {}
inline void solve() {
  long long n;
  cin >> n;
  if (n == 1) {
    cout << "1 0" << '\n';
    return;
  }
  vector<long long> factors;
  long long value = 1;
  long long len = ceil(sqrt(n)) + 1;
  long long originalN = n;
  for (long long i = 2; i < len; ++i) {
    if (n == 1) break;
    if (n % i == 0) {
      long long cnt = 0;
      while (n % i == 0) {
        ++cnt;
        n /= i;
      }
      factors.emplace_back(cnt);
      value *= i;
    }
  }
  long long maxCount = 0;
  for (const long long& factor : factors)
    if (factor > maxCount) maxCount = factor;
  if (maxCount < 2) {
    cout << originalN << " 0" << '\n';
    return;
  }
  long long operations = ceil(log2(maxCount));
  long long u = exp2(operations);
  for (const long long& factor : factors) {
    if (factor != u) {
      ++operations;
      break;
    }
  }
  if (n == 1)
    cout << value << " " << operations << '\n';
  else
    cout << value * n << " " << operations + 1 << '\n';
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  preprocessing();
  solve();
}
