#include <bits/stdc++.h>
using namespace std;
const int MAX_V = 10000000;
int main() {
  long long x;
  vector<pair<long long, long long> > ans;
  cin >> x;
  long long n = 1, s_i = 0, ss_i = 0;
  while (n <= MAX_V) {
    s_i += n;
    ss_i += n * n;
    long long s1 = x + n * s_i - ss_i;
    long long s2 = (n + 1) * n - s_i;
    if (s1 % s2 == 0 && s1 >= s2) {
      long long m = s1 / s2;
      if (n > m) break;
      ans.push_back(make_pair(n, m));
      if (n != m) ans.push_back(make_pair(m, n));
    }
    n++;
  }
  sort(ans.begin(), ans.end());
  cout << ans.size() << "\n";
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i].first << " " << ans[i].second << "\n";
  }
  return 0;
}
