#include using namespace std; #define fs first #define sc second #define pb push_back #define mp make_pair #define eb emplace_back #define ALL(A) A.begin(),A.end() #define RALL(A) A.rbegin(),A.rend() typedef long long LL; typedef pair P; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } template T gcd(T a,T b){return b?gcd(b,a%b):a;} const LL mod=1000000007; const LL LINF=1LL<<60; const int INF=1<<30; int dx[]={1,0,-1,0,1,-1,1,-1}; int dy[]={0,1,0,-1,1,-1,-1,1}; vector divi(LL K){ vector v; for(int i=1;i*i<=K;i++){ if(K%i) continue; v.pb(i); v.pb(K/i); } sort(ALL(v)); v.erase(unique(ALL(v)),v.end()); return v; } int main(){ LL x;cin >> x; vector

ans; int mi = INF; for (int i = -10000; i <= 10000; i++) { LL a = x / 2 + i; LL b = x - a; if(a <= 0 || b <= 0) continue; int an = a, bn = b; auto aa = divi(a); auto bb = divi(b); an -= aa.size(); bn -= bb.size(); if(chmin(mi,abs(an - bn))){ ans.clear(); ans.pb(mp(a, b)); } else if(mi == abs(an - bn)){ ans.pb(mp(a, b)); } } sort(ALL(ans)); for (int i = 0; i < ans.size(); i++) { cout << ans[i].fs << " " << ans[i].sc << endl; } return 0; }