#include <iostream>
#include <iomanip>
#include <cmath>
#include <climits>
#include <algorithm>
#include <numeric>

using namespace std;

const int MOD = (int)(1e9 + 7);

void find(long long n) {

    int maxValue = 0,  maxExponent = 0;
    for (long long i = 2;i * i <= n;i++) {

        // Xác định i là một ước nguyên tố của n
        if (n % i == 0) {
            
            // Tìm số mũ của i trong n
            int count = 0;
            while (n % i == 0) {
                count++;
                n = n / i;
            }
            if (count > maxExponent) {
                maxExponent = count;
                maxValue = i;
            }
        }
    }

    // Ước nguyên tố cuối cùng trong phân tích
    if (n != 1) {
        if (maxExponent < 1) {
            maxExponent = 1;
            maxValue = n;
        }
    }
    cout << maxValue << " " << maxExponent << endl;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    long long n;cin >> n;
    find(n);
    return 0;
}

