#include #include #include #include //#include #include #include #include #include #include //#include #include #include #include //#include #include //#include #include #include #include #include #include const int dx[] = {1, 0, -1, 0}; const int dy[] = {0, -1, 0, 1}; using namespace std; typedef long long ll; typedef unsigned long long ull; typedef vector vi; typedef vector vll; typedef pair pii; int main() { cin.tie(0); ios::sync_with_stdio(false); ll N; cin >> N; vector div; for (ll i = 2; i*i <= N; i++) { if (N%i == 0) { div.push_back(i); if (i*i != N) div.push_back(N/i); } } sort(div.begin(), div.end()); int sz = div.size(); ll ans = N-1; for (int i = 0; i < sz; i++) { if (ans+3 <= 2*div[i]) break; for (int j = i; j < sz; j++) { ll tmp = div[i]*div[j]; if (N < tmp) break; if (N%tmp) continue; tmp = N/tmp; ans = min(ans, div[i]+div[j]+tmp-3); } } cout << ans << " " << N-1 << endl; return 0; }