using System; using static System.Console; using System.Linq; using System.Collections.Generic; using System.Globalization; class Program { static long NN => long.Parse(ReadLine()); public static void Main() { Solve(); } static void Solve() { var n = NN; var cum = new long[1_000_002]; for (var i = 1L; i < cum.Length; ++i) cum[i] = cum[i - 1] + i * i * i; var ans = new List(); var j = 0; for (var i = 0; i < cum.Length; ++i) { while (j < i && cum[i] - cum[j] > n) ++j; if (cum[i] - cum[j] == n) ans.Add(new int[] { j + 1, i }); } WriteLine(ans.Count); if (ans.Count > 0) WriteLine(string.Join("\n", ans.Select(ai => string.Join(" ", ai)))); } }