#include <bits/stdc++.h>
#define ll long long
#define int long long
#define ull unsigned ll
#define ld long double
#define pb push_back
#define f first
#define s second
#define pq priority_queue
#define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define read_file freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
using namespace std;
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
// template<class T> using ordered_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
// template<class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
vector<int> v1;
int val1, val2, mini;
void rec(int sum1, int sum2, int i){
if(i==v1.size()){
if(max(sum1, sum2)<mini){
mini=max(sum1, sum2);
val1=sum1; val2=sum2;
}
return;
}
sum1*=v1[i];
rec(sum1, sum2, i+1);
sum1/=v1[i];
sum2*=v1[i];
rec(sum1, sum2, i+1);
sum2/=v1[i];
}
void solve(){
int x; cin>>x;
int a=1, b=1;
for(int i=2; i*i<=x; i++){
int pr=1;
while(x%i==0){
pr*=i;
x/=i;
}
if(pr!=1) v1.pb(pr);
}
if(x) v1.pb(x);
int prod=1; for(int i=0; i<v1.size(); i++) prod*=v1[i];
val1=prod; val2=1; mini=prod;
rec(1, 1, 0);
cout<<val1<<' '<<val2<<endl;
}
int32_t main() {
fast;
int t; t=1;
while(t--){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHVsbCB1bnNpZ25lZCBsbAojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZiBmaXJzdAojZGVmaW5lIHMgc2Vjb25kCiNkZWZpbmUgcHEgcHJpb3JpdHlfcXVldWUKI2RlZmluZSBmYXN0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCksY2luLnRpZSgwKSxjb3V0LnRpZSgwKQojZGVmaW5lIHJlYWRfZmlsZSBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyAjaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+Ci8vICNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgovLyB1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKCi8vIHRlbXBsYXRlPGNsYXNzIFQ+IHVzaW5nIG9yZGVyZWRfbXVsdGlzZXQgPSB0cmVlPFQsIG51bGxfdHlwZSwgbGVzc19lcXVhbDxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47Ci8vIHRlbXBsYXRlPGNsYXNzIFQ+IHVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTxULCBudWxsX3R5cGUsIGxlc3M8VD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+OwoKdmVjdG9yPGludD4gdjE7CmludCB2YWwxLCB2YWwyLCBtaW5pOwp2b2lkIHJlYyhpbnQgc3VtMSwgaW50IHN1bTIsIGludCBpKXsKCWlmKGk9PXYxLnNpemUoKSl7CgkJaWYobWF4KHN1bTEsIHN1bTIpPG1pbmkpewoJCQltaW5pPW1heChzdW0xLCBzdW0yKTsKCQkJdmFsMT1zdW0xOyB2YWwyPXN1bTI7CgkJfQoJCXJldHVybjsKCX0KCXN1bTEqPXYxW2ldOwoJcmVjKHN1bTEsIHN1bTIsIGkrMSk7CglzdW0xLz12MVtpXTsKCglzdW0yKj12MVtpXTsKCXJlYyhzdW0xLCBzdW0yLCBpKzEpOwoJc3VtMi89djFbaV07Cn0KCnZvaWQgc29sdmUoKXsKCWludCB4OyBjaW4+Png7CgoJaW50IGE9MSwgYj0xOwoJZm9yKGludCBpPTI7IGkqaTw9eDsgaSsrKXsKCQlpbnQgcHI9MTsKCQl3aGlsZSh4JWk9PTApewoJCQlwcio9aTsKCQkJeC89aTsKCQl9CgkJaWYocHIhPTEpIHYxLnBiKHByKTsKCX0KCWlmKHgpIHYxLnBiKHgpOwoJaW50IHByb2Q9MTsgZm9yKGludCBpPTA7IGk8djEuc2l6ZSgpOyBpKyspIHByb2QqPXYxW2ldOwoJdmFsMT1wcm9kOyB2YWwyPTE7IG1pbmk9cHJvZDsKCglyZWMoMSwgMSwgMCk7Cgljb3V0PDx2YWwxPDwnICc8PHZhbDI8PGVuZGw7Cn0KCmludDMyX3QgbWFpbigpIHsKCWZhc3Q7CgoJaW50IHQ7IHQ9MTsKCXdoaWxlKHQtLSl7CgkJc29sdmUoKTsKCX0KICAgIHJldHVybiAwOwp9