#include<bits/stdc++.h>
#pragma GCC optimize("Os, Ofast, unroll-loops")
using namespace std;
typedef unsigned long long int ll;
const int NMAX = 100005;
ll log_a_to_base_b(ll a, ll b)
{
return (ll)(log2(a) / log2(b));
}
int main() {
freopen("numere2.in", "r", stdin);
freopen("numere2.out", "w", stdout);
ll p;
scanf("%llu", &p);
pair<int, int> result = {0, 0};
for (ll a = 0; a <= NMAX; a++) {
ll b = log_a_to_base_b(p, a);
if (pow(a, b) == p) {
result.first = a;
result.second = b;
break;
}
}
printf("%d\n%d", result.first, result.second);
return 0;
}