#include using namespace std; using ll = long long; ll cube_sum(ll 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){ ll 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; }