x = int(input()) m = 301 from collections import Counter import itertools as it import bisect as bs lcs = [Counter(a**3 + b**3 for a, b in it.combinations_with_replacement(range(c + 1), 2)) for c in range(m)] rds = [Counter(e**3 + f**3 for e, f in it.combinations_with_replacement(range(d, m), 2)) for d in range(m)] lcs_ = [sorted(c.items()) for c in lcs] rds_ = [sorted(c.items()) for c in rds] ans = 0 for c, d in it.combinations_with_replacement(range(m), 2): rem = x - c**3 - d**3 if rem < d**3 * 2: continue lc = lcs[c] rd = rds[d] lc_ = lcs_[c] rd_ = rds_[d] il = bs.bisect_right(lc_, rem - d**3 * 2, key=lambda t: t[0]) ir = bs.bisect_right(rd_, rem, key=lambda t: t[0]) if il < ir: for i in range(il): s, f = lc_[i] ans += f * rd[rem - s] else: for i in range(ir): s, f = rd_[i] ans += f * lc[rem - s] print(ans)