def get_required_nodes(n): required = set() if n == 0: return [0] required.add(n) from collections import deque queue = deque([n]) while queue: current = queue.popleft() for child in [current // 3, current // 5]: if child not in required and child > 0: required.add(child) queue.append(child) required.add(0) return sorted(required) n = int(input()) if n == 0: print(1) else: required_nodes = get_required_nodes(n) memo = {0: 1} for i in required_nodes[1:]: # Skip 0 since it's already initialized memo[i] = memo[i // 3] + memo[i // 5] print(memo[n])