def main(): import sys input = sys.stdin.read().strip() N = int(input) if N < 2: print(0) return # Sieve of Eratosthenes to find primes up to N sieve = [True] * (N + 1) sieve[0] = sieve[1] = False for i in range(2, int(N ** 0.5) + 1): if sieve[i]: sieve[i*i : N+1 : i] = [False] * len(sieve[i*i : N+1 : i]) primes = [p for p in range(2, N + 1) if sieve[p]] # Compute largest prime power for each prime x = {} for p in primes: current = p while current * p <= N: current *= p x[p] = current initial_sum = sum(x[p] for p in primes) max_gain = 0 # Iterate through all pairs of primes p < q for i in range(len(primes)): p = primes[i] for j in range(i + 1, len(primes)): q = primes[j] product = p * q if product > N: continue gain = product - (x[p] + x[q]) if gain > max_gain: max_gain = gain final_sum = initial_sum + max_gain print(final_sum) if __name__ == "__main__": main()