#include using namespace std; using lint = long long int; using pint = pair; using plint = pair; #define ALL(x) (x).begin(), (x).end() #define SZ(x) ((lint)(x).size()) #define POW2(n) (1LL << (n)) #define FOR(i, begin, end) for (int i = (begin), i##_end_ = (end); i < i##_end_; i++) #define IFOR(i, begin, end) for (int i = (end)-1, i##_begin_ = (begin); i >= i##_begin_; i--) #define REP(i, n) FOR(i, 0, n) #define IREP(i, n) IFOR(i, 0, n) int main() { lint n; cin >> n; lint a=1,b=n,ans = 0; for (int i = 2; i * i <= n;i++){ if(n%(i*i)==0){ a *= i; b /= i * i; n /= i * i; i--; } } cout << a << " "<< b << "\n"; return 0; }