#include using namespace std; using ll = long long; #define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i)) #define all(x) (x).begin(),(x).end() #define pb push_back #define fi first #define se second #define dbg(x) cout<<#x" = "<<((x))< ostream& operator<<(ostream& o, const pair &p){o<<"("< ostream& operator<<(ostream& o, const vector &v){o<<"[";for(T t:v){o<; const ll INF = LLONG_MAX/3; ll n; const int N = 66; vector pf; int P; map dp[N]; ll dfs(int d, ll a, ll b){ pl k(a,b); if(dp[d].count(k)) return dp[d][k]; if(d == P){ ll c = n/a/b; // printf(" d %d, (%lld %lld %lld)\n",d,a,b,c); return a+b+c-3; } ll ret = dfs(d+1, a, b); ret = min(ret, dfs(d+1, a*pf[d], b)); ret = min(ret, dfs(d+1, a, b*pf[d])); return dp[d][k] = ret; } int main(){ cin >>n; // prime factor ll t = n; for(ll i=2; i*i<=n; ++i){ while(t%i == 0){ t /= i; pf.pb(i); } } if(t>1) pf.pb(t); P = pf.size(); cout << dfs(0,1,1) << " " << n-1 << "\n"; return 0; }