package main import . "fmt" func main() { var n int Scan(&n) ans := solve(n) Println(len(ans)) Print(ans...) } func solve(n int) (ans []any) { sum := 0 r := 0 for i := 1; i*i*i<=n; i++ { sum +=i*i*i r = i } for l := 1; l*l*l<=n; l++ { if r < l { r = l sum = r*r*r } for sum > n && r > l { sum -= r*r*r r-- } for sum < n { r++ sum += r*r*r } if sum == n { ans = append(ans, Sprintf("%d %d\n", l, r)) } sum -= l*l*l } return } func check() { t := make([][]any, 100*100*100+1) for l := 1; l <= 100; l++ { for r, sum := l, 0; r <= 100; r++ { sum += r*r*r if sum >= len(t) { break } str := Sprintf("%d %d\n", l, r) t[sum] = append(t[sum], str) } } for sum, list := range t { if sum == 0 { continue } ans := solve(sum) if len(ans) != len(list) { println(sum) println(len(list)) println(len(ans)) println(Sprintf("%#v", list)) println(Sprintf("%#v", ans)) panic("unmatch") } } } func init() { check() }