#include <bits/stdc++.h>
using namespace std;
long long GCD(long long a, long long b) {
  while (b) b ^= a ^= b ^= a %= b;
  return a;
}
long long LCM(long long a, long long b) { return a * (b / GCD(a, b)); }
const double EPS = 10e-9;
const long long INF = (1LL << 30);
using namespace std;
template <typename T>
string toString(T t) {
  stringstream ss;
  ss << t;
  return ss.str();
}
long long isSquare(long long N) {
  long long lo = 1, hi = 2 * sqrt(N);
  while (hi - lo > 1) {
    long long mid = (hi + lo) >> 1;
    long long res = mid * mid;
    if (res < N) {
      lo = mid;
    } else if (res > N) {
      hi = mid;
    } else {
      return mid;
    }
  }
  return lo;
}
int main() {
  long long N;
  cin >> N;
  if (N % 3 != 0) {
    cout << 0 << endl;
  } else {
    N /= 3;
    int options = 0;
    for (long long i = 1; i * i * i <= N; i++) {
      if (N % i == 0) {
        long long left = N / i, to = i / 2;
        for (long long a = 1; a <= to; a++) {
          long long c = i - a;
          long long d = (a - c) * (a - c);
          long long sqr = isSquare(d + 4 * left);
          if (sqr * sqr == d + 4 * left) {
            long long b = (-(a + c) + sqr) >> 1;
            if (c <= b) {
              if (a == c) {
                if (b == c) {
                  options += 1;
                } else {
                  options += 3;
                }
              } else {
                if (b == c) {
                  options += 3;
                } else {
                  options += 6;
                }
              }
            }
          }
        }
      }
    }
    cout << options << endl;
  }
  return 0;
}
