横浜君はいくつかの荷物の配送料金を見積もるところだ. 荷物の配送料金は,それぞれ整数値に切り上げられた, 幅 w, 奥行 d, 高さ h に基づいている. 配送料金はそれらの「和」に比例する.
配送する荷物の一覧はあるのだが,手違いにより そこにあるのは各荷物の幅,奥行,高さの「積」 w×d×h であって, 「和」 w+d+h ではない. この情報だけでは配送料金を正確に計算できない.
そこで横浜君は配送料金の最小値を見積もることにした. そのためには一覧中に記された各荷物の「積」 p に対して, p=w×d×h を満たす 最小の「和」 s=w+d+h を求める必要がある.
あなたには, 与えられた積 p に対して, 和の最小値 s を計算するプログラムを書いて横浜君を助けてほしい.
入力は複数のデータセットからなる. 各データセットは 1 行で,ひとつの整数 p (0 < p < 1015) が記されている.
入力の終わりは,ゼロひとつからなる行で表される.
データセットは300個以内である.
各データセットについて,整数 s ひとつからなる行を出力せよ. s は p=w×d×h を満たすみっつの正整数 w, d, h の和 w+d+h の最小値である.
1 2 6 8 729 47045881 12137858827249 562949953421312 986387345919360 999730024299271 999998765536093 0
3 4 6 6 27 1083 6967887 262144 298633 299973 999998765536095