#include <bits/stdc++.h>
using namespace std;
__inline bool nextInt(int &val) {
  char ch;
  int sgn = 1;
  while ((ch = getchar()) != EOF) {
    if (ch == '-') sgn = -1;
    if (ch >= '0' && ch <= '9') break;
  }
  if (ch == EOF) return false;
  val = (int)(ch - '0');
  while (true) {
    ch = getchar();
    if (ch >= '0' && ch <= '9') {
      val = 10 * val + (int)(ch - '0');
    } else
      break;
  }
  val *= sgn;
  return true;
}
__inline bool nextString(string &s) {
  char ch;
  while ((ch = getchar()) != EOF) {
    if (ch >= 33 && ch <= 126) break;
  }
  if (ch == EOF) return false;
  s = string(1, ch);
  while (true) {
    ch = getchar();
    if (ch >= 33 && ch <= 126) {
      s = s + string(1, ch);
    } else
      break;
  }
  return true;
}
long long dv[88], pw[88][88];
int ret, nd, c[88];
long long n;
vector<vector<long long> > v;
void f(int curDiv, long long a_plus_c, long long b_plus_c, long long b_plus_a) {
  if (curDiv == nd) {
    long long b2 = b_plus_a + b_plus_c - a_plus_c;
    if (b2 > 0 && b2 % 2 == 0) {
      long long c2 = b_plus_c + a_plus_c - b_plus_a;
      if (c2 > 0 && c2 % 2 == 0) {
        long long a2 = a_plus_c + b_plus_a - b_plus_c;
        if (a2 > 0 && a2 % 2 == 0) {
          ret++;
        }
      }
    }
  } else {
    for (int iac = 0; iac < (c[curDiv] + 1); iac++) {
      for (int ibc = 0; ibc < (c[curDiv] - iac + 1); ibc++) {
        int iba = c[curDiv] - iac - ibc;
        f(curDiv + 1, a_plus_c * pw[curDiv][iac], b_plus_c * pw[curDiv][ibc],
          b_plus_a * pw[curDiv][iba]);
      }
    }
  }
}
int main() {
  cin >> n;
  if (n % 3 != 0) {
    cout << 0 << endl;
    return 0;
  }
  n /= 3;
  long long nn = n;
  nd = 0;
  for (long long d = 2; d * d <= n; d++)
    if (nn % d == 0) {
      int cnt = 0;
      while (nn % d == 0) {
        cnt++;
        nn /= d;
      }
      dv[nd] = d;
      c[nd] = cnt;
      nd++;
    }
  if (nn > 1) {
    dv[nd] = nn;
    c[nd] = 1;
    nd++;
  }
  for (int i = 0; i < (nd); i++) {
    pw[i][0] = 1LL;
    for (int j = 0; j < (c[i] + 1); j++) pw[i][j + 1] = pw[i][j] * dv[i];
  }
  ret = 0;
  f(0, 1, 1, 1);
  cout << ret << endl;
  return 0;
}
