#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const int maxn = 1000000;
int prime[maxn + 10], vis[maxn + 10], tot, num[maxn + 10], two[100];
void getprime() {
  int i, j;
  tot = 0;
  for (i = 2; i <= maxn; i++) {
    if (!vis[i]) prime[++tot] = i;
    for (j = 1; j <= tot && prime[j] * i <= maxn; j++) {
      vis[prime[j] * i] = 1;
      if (i % prime[j] == 0) break;
    }
  }
}
int main() {
  int n;
  scanf("%d", &n);
  getprime();
  int ma = 0, ans = 1;
  for (int i = 1; i <= tot; i++) {
    if (n % prime[i] == 0) ans *= prime[i];
    while (n % prime[i] == 0) {
      n /= prime[i];
      num[i]++;
    }
    ma = max(ma, num[i]);
  }
  two[0] = 1;
  int i;
  for (i = 1; i <= 20; i++) {
    two[i] = two[i - 1] * 2;
    if (two[i] >= ma) break;
  }
  if (two[0] >= ma) i = 0;
  int f = 1;
  for (int j = 1; j <= tot; j++) {
    if (num[j] != two[i] && num[j] != 0) {
      f = 0;
      break;
    }
  }
  int ans2 = i;
  if (f == 0) ans2++;
  printf("%d %d\n", ans, ans2);
  return 0;
}
