from bisect import bisect_right A = int(input()) K = 4444 ** 4 # Precompute residue_dict residue_dict = {r: [] for r in range(333)} for y in range(1, 4445): r = pow(y, 3, 333) y4 = y ** 4 residue_dict[r].append(y4) # Sort each list for r in residue_dict: residue_dict[r].sort() total = 0 for x in range(1, 4445): r_x = pow(x, 3, 333) T = (A - r_x) % 333 x4 = x ** 4 M = K - x4 if M < 0: continue for a in range(333): b = (T - a) % 333 if a not in residue_dict or b not in residue_dict: continue list_a = residue_dict[a] list_b = residue_dict[b] for y4 in list_a: if y4 > M: break remaining = M - y4 if remaining < 0: continue if remaining < 1: continue # Find number of z4 in list_b <= remaining count = bisect_right(list_b, remaining) total += count print(total)