import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long n = scanner.nextLong();
        System.out.println(maxScore(n));
        scanner.close();
    }
    
    private static long maxScore(long n) {
        long score = 0;
        
        // 贪心策略:每次选择当前数的最大真因子作为下一个数
        while (n > 1) {
            score += n;
            // 找到n的最小质因子
            long smallestPrime = smallestPrimeFactor(n);
            // 最大真因子 = n / 最小质因子
            n = n / smallestPrime;
        }
        
        // 最后加上1(游戏结束时的石子数)
        score += 1;
        return score;
    }
    
    // 寻找n的最小质因子
    private static long smallestPrimeFactor(long n) {
        // 偶数的最小质因子是2
        if (n % 2 == 0) {
            return 2;
        }
        
        // 检查奇数因子,从3开始,步长为2
        for (long i = 3; i * i <= n; i += 2) {
            if (n % i == 0) {
                return i;
            }
        }
        
        // 如果没有找到因子,说明n是质数,其最小质因子是自身
        return n;
    }
}