#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using ll=long long; #define int ll #define rng(i,a,b) for(int i=int(a);i=int(a);i--) #define per(i,b) gnr(i,0,b) #define eb emplace_back #define all(x) x.begin(),x.end() #define SZ(x) ((int)x.size()) #define fi first #define se second const int INF = 1e15; using namespace std; template using vc=vector; template using vvc=vc>; using pi=pair; using vi=vc; template inline bool chmax(T &a,T b){if(a inline bool chmin(T &a,T b){if(a>b){a=b;return true;}return false;} unordered_map prime_factor(int n){ unordered_map ret; for(int i=2; i*i<=n; i++){ while(n % i == 0){ ret[i]++; n /= i; } } if(n != 1) ret[n]=1; return ret; } int power(int x,int y){ int res=1; while(y){ if(y&1)res=(res*x); y=y>>1; x=(x*x); } return res; } signed main() { cin.tie(0); ios::sync_with_stdio(0); cout<> N; int a=1,b=1; for(auto p:prime_factor(N)) { if(p.se/2) a*=power(p.fi,(p.se/2)); if(p.se%2) b*=p.fi; } cout << a << " " << b << endl; }