#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T sqr(T x) {
  return x * x;
}
const double EPS = 1e-6;
const int INF = 0x3fffffff;
const long long LINF = INF * 1ll * INF;
const double PI = acos(-1.0);
using namespace std;
long long ans = 0;
long long v[1000005];
int cnt = 0;
void find(int id, long long x, long long y) {
  for (int i = 0; i < cnt; i++) {
    if (y % v[i] == 0) {
      long long z = y / v[i];
      long long w = v[i];
      if ((w + z - x) % 2 != 0) continue;
      long long c = (w + z - x) / 2;
      long long b = w - c;
      long long a = x - b;
      if (a > 0 && b > 0 && c > 0) ans++;
    }
  }
}
int main(void) {
  long long n;
  cin >> n;
  if (n % 3 != 0) {
    cout << 0 << endl;
    return 0;
  }
  n /= 3;
  long long sq_n = sqrt(n + 0.5);
  for (long long i = 2; i * i <= n; i++) {
    if (n % i == 0) v[cnt++] = i;
  }
  for (int i = 0; i < cnt; i++) {
    if (v[i] % 2 && n / v[i] % 2) continue;
    find(i, v[i], n / v[i]);
  }
  cout << ans << endl;
}
