#include "bits/stdc++.h" #include #include #include using namespace std; using namespace atcoder; using ll = long long; // r-lをkに固定したとき、合計値は{r^2(r+1)^2-(r-k-1)^2(r-k)^2}/2 ll f3(ll r, ll k) { ll res = (r * r * (r + 1) * (r + 1) - (r - k - 1) * (r - k - 1) * (r - k) * (r - k))/4; return res; } int main() { ll n; cin >> n; vector> ans; ll k = 0; while (true) { if (f3(k + 1, k) > n) break; ll limit = cbrt(n) + 2; ll ok = k + 1, ng = limit; while (abs(ok - ng) > 1) { ll mid = ok + ng >> 1; if (f3(mid, k) > n) ng = mid; else ok = mid; } if (f3(ok, k) == n) ans.push_back({ ok, ok - k }); k++; } sort(ans.begin(), ans.end()); cout << ans.size() << "\n"; for (auto e : ans) { cout << e.second << " " << e.first << "\n"; } }