#include <bits/stdc++.h>
using namespace std;
long long n;
vector<long long> v, p, st;
map<long long, int> m;
long long pw(long long n, long long x) {
  long long k = 0;
  while (n % x == 0) {
    n /= x;
    k++;
  }
  return k;
}
int main() {
  cin >> n;
  if (n % 3 != 0) {
    puts("0");
    return 0;
  }
  n /= 3;
  for (long long i = 1ll; i * i <= n; i++) {
    if (n % i == 0) {
      v.push_back(i);
      if (i * i != n) v.push_back(n / i);
    }
  }
  sort(v.begin(), v.end());
  long long ans = 0;
  for (int i = 0; i < v.size(); i++) {
    long long x = v[i];
    long long vv = n / x;
    for (int j = i; j < v.size() && v[j] < vv; j++) {
      long long y = v[j];
      long long z = n / x / y;
      if ((y * z) != vv || y > z) continue;
      if ((x + y + z) % 2 == 0 && x + y > z) {
        long long a = (+x + y - z) / 2;
        long long b = (+x - y + z) / 2;
        long long c = (-x + y + z) / 2;
        if (a < 1 || b < 1 || c < 1) continue;
        if (a == b && b == c)
          ans++;
        else if (a == b || b == c)
          ans += 3ll;
        else
          ans += 6ll;
      }
    }
  }
  cout << ans;
  return 0;
}
