## https://yukicoder.me/problems/no/2510 def main(): X = int(input()) ITEM_MAX_VALUE = 300 # 低い法 c_array = [{} for _ in range(ITEM_MAX_VALUE + 1)] d_array = [{} for _ in range(ITEM_MAX_VALUE + 1)] for a in range(ITEM_MAX_VALUE + 1): a3 = a ** 3 if a3 > X: break for b in range(a, ITEM_MAX_VALUE + 1): b3 = b ** 3 if a3 + b3 > X: break for c in range(b, ITEM_MAX_VALUE + 1): c3 = c ** 3 if a3 + b3 + c3 > X: break value = a3 + b3 + c3 if value not in c_array[c]: c_array[c][value] = 0 c_array[c][value] += 1 if value not in d_array[a]: d_array[a][value] = 0 d_array[a][value] += 1 answer = 0 value_map = {} for m in reversed(range(ITEM_MAX_VALUE + 1)): for key, value in d_array[m].items(): if key not in value_map: value_map[key] = 0 value_map[key] += value for key, value in c_array[m].items(): x = X - key if x in value_map: ans = value * value_map[x] answer += ans print(answer) if __name__ == "__main__": main()