## https://yukicoder.me/problems/no/2510 def main(): X = int(input()) ITEM_MAX_VALUE = 300 # 低い法 c_array = [{} for _ in range(ITEM_MAX_VALUE + 1)] for a in range(ITEM_MAX_VALUE + 1): if a ** 3 > X: break for b in range(a, ITEM_MAX_VALUE + 1): if a ** 3 + b ** 3> X: break for c in range(b, ITEM_MAX_VALUE + 1): if a ** 3 + b ** 3 + c ** 3 > X: break value = a ** 3 + b ** 3 + c ** 3 if value not in c_array[c]: c_array[c][value] = 0 c_array[c][value] += 1 # 高い法 d_array = [{} for _ in range(ITEM_MAX_VALUE + 1)] for a in range(ITEM_MAX_VALUE + 1): if a ** 3 > X: break for b in range(a, ITEM_MAX_VALUE + 1): if a ** 3 + b ** 3> X: break for c in range(b, ITEM_MAX_VALUE + 1): if a ** 3 + b ** 3 + c ** 3 > X: break value = a ** 3 + b ** 3 + c ** 3 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()