#include using namespace std; #ifdef LOCAL #include "debug.h" #else #define DEBUG(...) #endif template vector divisors(T n) { vector res; for (T d = 1; d * d <= n; ++d) if (n % d == 0) res.push_back(d), res.push_back(n / d); sort(begin(res), end(res)); return {begin(res), unique(begin(res), end(res))}; } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int _n; cin >> _n; using ll = __int128_t; ll n = (ll)_n * _n; auto ds = divisors(n); vector> v; for (ll s : ds) { for (ll sa : ds) { if (sa >= s) break; if (s > n / sa) break; ll a = s - sa; ll x = a * a - 4 * n / (s * sa); if (x < 0) continue; ll d = sqrt(x + 0.5); ll b = ((2 * s - a) - d) / 2, c = ((2 * s - a) + d) / 2; if (a <= b and c < a + b) { if (s * (s - a) * (s - b) * (s - c) == n) { v.emplace_back(a, b, c); } } } } sort(begin(v), end(v)); v.erase(unique(begin(v), end(v)), end(v)); cout << size(v) << '\n'; }