#include <bits/stdc++.h>
using namespace std;
FILE* g_f_;
int g_s_;
char* g_g_;
template <class _T>
inline _T sqr(const _T& x) {
  return x * x;
}
template <class _T>
inline string tostr(const _T& a) {
  ostringstream os("");
  os << a;
  return os.str();
}
const long double PI = 3.1415926535897932384626433832795;
const long double EPS = 1e-11;
signed long long n;
int k;
signed long long a[1024000];
int main() {
  cout << setiosflags(ios::fixed) << setprecision(10);
  cin >> n;
  if (n % 3 != 0) {
    puts("0");
    return 0;
  }
  n /= 3;
  k = 0;
  for (int i = (1); i <= (int)(10000000); i++) {
    signed long long x = i;
    x *= x;
    if (x > n) break;
    if (n % i == 0) {
      a[k++] = i;
      if (x != n) a[k++] = n / i;
    }
  }
  sort(a, a + k);
  int cma = (int)(pow(n / 2.0, 1.0 / 3.0) + 1e-7);
  signed long long ans = 0;
  a[k] = n + 1;
  for (int c = (1); c <= (int)(cma); c++) {
    int bma = (int)(pow(n / 2.0 / c, 1.0 / 2.0) + 1e-7);
    signed long long b = c;
    while (b <= bma) {
      if (n % (b + c) != 0) {
        int t = upper_bound(a, a + k, n / (b + c)) - a;
        if (t == 0) break;
        signed long long y = a[t - 1];
        signed long long nb = n / y - c;
        if (nb < b) nb = b + 1;
        b = nb;
        continue;
      }
      signed long long bb = b + c;
      signed long long cc = b * (signed long long)c - n / (b + c);
      signed long long dd = bb * bb - 4LL * cc;
      signed long long z = (int)(sqrt(dd) + 1e-7);
      signed long long a = (-bb + z) / 2;
      if (a < b) break;
      if (z * z != dd) goto l1;
      if (a != b && b != c)
        ans += 6;
      else if (a != b || b != c)
        ans += 3;
      else
        ans++;
    l1:;
      b++;
    }
  }
  cout << ans << endl;
  return 0;
}
