#include #include #include std::vector vec; long long int ans; void f(int p,long long int a,long long int b,long long int c){ if(vec.size()==p){ ans=std::min(a+b+c-3,ans); }else{ long long int e=vec[p]; if(a<=b&&a<=c){ f(p+1,a*e,b,c); }else if(b<=a&&b<=c){ f(p+1,a,b*e,c); }else{ f(p+1,a,b,c*e); } } } int main() { // your code goes here long long int n,t; std::cin>>n; t=n; ans=n; for(long long int i=2;i*i<=n;i++){ while(n%i==0){ n/=i; vec.push_back(i); } } if(n>1){ vec.push_back(n); } std::sort(vec.begin(),vec.end()); std::reverse(vec.begin(),vec.end()); f(0,1,1,1); std::cout<