#include using namespace std; using ll = long long; __int128_t cube_sum(__int128_t x){ return (x * (x + 1) / 2) * (x * (x + 1) / 2); } int main() { ll n; cin >> n; assert(1 <= n && n <= 1000000000000000000); ll l = 1, r = 1; vector> ans; while (r * r * r <= n){ __int128_t t = cube_sum(r) - cube_sum(l - 1); if (t == n){ ans.push_back({l, r}); } if (t <= n) r++; else l++; } cout << ans.size() << endl; for (auto [x, y] : ans) cout << x << " " << y << endl; }