#include <bits/stdc++.h>
using namespace std;
long long n[1000005], m[1000005];
int main() {
  int k = 0;
  long long x;
  while (scanf("%lld", &x) != EOF) {
    long long c1, c2;
    for (long long i = 1; i <= 10000000; i++) {
      c1 = 6 * x + i * i * i - i;
      c2 = 3 * i * i + 3 * i;
      if (c1 % c2 != 0) continue;
      c1 = c1 / c2;
      if (c1 <= i) {
        if (c1 == i) {
          n[k] = i;
          m[k] = c1;
          k++;
        }
        break;
      }
      n[k] = i;
      m[k] = c1;
      k++;
    }
    if (m[k - 1] != n[k - 1])
      printf("%d\n", 2 * k);
    else
      printf("%d\n", 2 * k - 1);
    for (int i = 0; i < k; i++) printf("%lld %lld\n", n[i], m[i]);
    if (m[k - 1] == n[k - 1]) k--;
    for (int i = k - 1; i >= 0; i--) printf("%lld %lld\n", m[i], n[i]);
  }
  return 0;
}
