public class Euler443 {
    static long gcd(long a, long b) {
        while (b != 0) {
            long temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }

    static long smallestPrimeFactor(long n) {
        if ((n & 1) == 0)
            return 2;
        if (n % 3 == 0)
            return 3;
        for (long d = 5; d * d <= n; d += 6) {
            if (n % d == 0)
                return d;
            if (n % (d + 2) == 0)
                return d + 2;
        }
        return n;
    }

    static long solveN(long n) {
        if (n <= 9) {
            long g = 13;
            for (long k = 5; k <= n; k++) {
                g += gcd(k, g);
            }
            return g;
        }

        long anchor = 9;
        while (anchor < n) {
            long p = smallestPrimeFactor(2 * anchor - 1);
            long nextAnchor = anchor + (p - 1) / 2;
            if (nextAnchor > n) {
                return n + 2 * anchor;
            }
            anchor = nextAnchor;
        }
        return 3 * n;
    }

    public static String solve() {
        return Long.toString(solveN(1000000000000000L));
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
