#include <bits/stdc++.h>
using namespace std;
using namespace rel_ops;
const double pi = acos(-1.0);
const double eps = 1e-11;
const int inf = 0x7FFFFFFF;
template <class T>
inline bool checkmin(T &a, T b) {
  return b < a ? a = b, 1 : 0;
}
template <class T>
inline bool checkmax(T &a, T b) {
  return b > a ? a = b, 1 : 0;
}
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <class T>
void show(T a, int n) {
  for (int i = 0; i < n; ++i) cout << a[i] << ' ';
  cout << endl;
}
template <class T>
void show(T a, int r, int l) {
  for (int i = 0; i < r; ++i) show(a[i], l);
  cout << endl;
}
long long p[60], c[60];
int nc = 0, tc, ty;
long long ys[2000000];
int main() {
  long long n, nn;
  while (cin >> n) {
    if (n % 3 != 0) {
      puts("0");
      continue;
    }
    n /= 3;
    nn = n;
    int q = sqrt(double(n)) + 1;
    ty = nc = tc = 0;
    for (int i = 2; i <= q; i++)
      if (n % i == 0) {
        ys[ty++] = i;
        ys[ty++] = n / i;
      }
    for (int i = 2; i <= q && n > 1; i++) {
      if (n % i == 0) {
        c[nc] = 0;
        while (n % i == 0) {
          n /= i;
          c[nc]++;
          tc++;
        }
      }
    }
    if (n != 1) {
      c[nc] = 1;
      tc++;
      p[nc++] = n;
    }
    if (tc < 3) {
      puts("0");
      continue;
    }
    sort(ys, ys + ty);
    ty = unique(ys, ys + ty) - ys;
    int ans = 0;
    int add[3] = {6, 3, 1};
    for (int i = 0; i < ty; i++) {
      long long &u = ys[i];
      if (u * u * u > nn) break;
      for (int j = i; j < ty; j++) {
        long long &v = ys[j];
        if (v * v * u > nn) break;
        if (nn % (u * v) == 0) {
          long long g = nn / u / v;
          if (g >= u + v) continue;
          if ((u + v - g) & 1) continue;
          int cc = (g == v) + (v == u);
          ans += add[cc];
        }
      }
    }
    cout << ans << endl;
  }
  return 0;
}
