# # (´・ω・`) # require 'prime' n=gets.to_i resultL=nil resultH=n-1 div=[] Prime.prime_division(n).each{|e| div+=[e[0]]*e[1] } div.sort! if div.size==1 printf("%d %d",resultH,resultH) exit elsif div.size==2 printf("%d %d",div[0]+div[1]-2,resultH) exit end min=nil 0.upto(div.size-2){|i| break if div[i]*div[i]*div[i]>n i+1.upto(div.size-1){|j| break if div[i]*div[j]*div[j]>n if (n%(div[i]*div[j])==0) t=(div[i]+div[j]+n/div[i]/div[j]) min=t if !min||t end } } printf("%d %d",min-3,resultH) exit