package main
import (
"fmt"
)
func solve(m int64) (int, int64) {
if m == 0 {
return 0, 0
}
var a int64 = 1
var l, r int64 = 1, 100000
for l <= r {
mid := (l + r) / 2
if mid*mid*mid <= m {
a = mid
l = mid + 1
} else {
r = mid - 1
}
}
b1, v1 := solve(m - a*a*a)
b1++
v1 += a * a * a
b2, v2 := solve(a*a*a - 1 - (a-1)*(a-1)*(a-1))
b2++
v2 += (a - 1) * (a - 1) * (a - 1)
if b1 > b2 || (b1 == b2 && v1 > v2) {
return b1, v1
}
return b2, v2
}
func main() {
var m int64
if _, err := fmt.Scan(&m); err == nil {
b, v := solve(m)
fmt.Println(b, v)
}
}