#include <bits/stdc++.h>
int prime[400000], mount[400000];
int main(int argc, char** argv) {
  int n, i = 1, k = 0, a = 0, b = 1, m, max = 0, w = 1, p = 0, c = 0;
  scanf("%d", &n);
  if (n == 1) {
    printf("1 0");
    return 0;
  }
  while (n != 1) {
    for (i = 2; i <= n; i++) {
      if (n % i == 0) {
        if (i == prime[k]) {
          mount[k]++;
        } else {
          k++;
          prime[k] = i;
          mount[k]++;
        }
        n = n / i;
        break;
      }
    }
  }
  for (i = 1; i <= k; i++) {
    b = b * prime[i];
  }
  for (i = 1; i <= k; i++) {
    if (mount[i] > max) {
      max = mount[i];
    }
  }
  if (max == 1) {
    printf("%d 0", b);
    return 0;
  }
  while (1) {
    p++;
    w = w * 2;
    if (w >= max) {
      break;
    }
  }
  a = p;
  for (i = 1; i <= k; i++) {
    c = c + w - mount[i];
  }
  if (c != 0) {
    a++;
  }
  printf("%d %d", b, a);
  return 0;
}
