#include <bits/stdc++.h>
using namespace std;
long long n;
long long arr[100005];
int c5;
int find(long long a, long long b, long long c) {
  long long arr[4];
  arr[0] = a;
  arr[1] = b;
  arr[2] = c;
  sort(arr, arr + 3);
  if (arr[0] < arr[1] && arr[1] < arr[2])
    return 6;
  else if (arr[0] == arr[1] && arr[1] < arr[2])
    return 3;
  else if (arr[0] < arr[1] && arr[1] == arr[2])
    return 3;
  else
    return 1;
}
int main() {
  cin >> n;
  if (n % 6 != 0) {
    printf("0\n");
    return 0;
  }
  n /= 3;
  for (long long x = 1; x * x <= n; x++) {
    if (n % x == 0) {
      arr[c5++] = x;
      if (x * x != n) arr[c5++] = n / x;
    }
  }
  sort(arr, arr + c5);
  long long x, y, z;
  int ans = 0, cnt = 0;
  long long a, b, c;
  for (int i = 0; i < c5; i++) {
    x = arr[i];
    for (int j = i; j < c5 && arr[i] * arr[j] * arr[j] <= n; j++) {
      if (n % (arr[i] * arr[j]) == 0) {
        y = arr[j];
        z = n / (arr[i] * arr[j]);
        if (x <= y <= z) {
          if (x - y + z > 0 && y - x + z > 0 && y - z + x > 0 &&
              (x - y + z) % 2 == 0) {
            cnt++;
            a = (x - y + z) / 2;
            b = (y - x + z) / 2;
            c = (y - z + x) / 2;
            ans += find(a, b, c);
          }
        }
      }
    }
  }
  printf("%d\n", ans);
  return 0;
}
