import java.util.ArrayList;
import java.util.List;

public class Euler552 {
    static List<Integer> primesUpTo(int n) {
        List<Integer> primes = new ArrayList<>();
        if (n < 2)
            return primes;
        boolean[] isComp = new boolean[n + 1];
        for (int i = 2; i <= n; i++) {
            if (!isComp[i]) {
                primes.add(i);
                if (i <= n / i) {
                    for (int j = i * i; j <= n; j += i) {
                        isComp[j] = true;
                    }
                }
            }
        }
        return primes;
    }

    static long[] extGcd(long a, long b) {
        if (b == 0)
            return new long[] { a, 1, 0 };
        long[] res = extGcd(b, a % b);
        long g = res[0];
        long x1 = res[1];
        long y1 = res[2];
        return new long[] { g, y1, x1 - (a / b) * y1 };
    }

    static int modInvPrime(int a, int p) {
        long[] res = extGcd(a, p);
        long r = res[1] % p;
        if (r < 0)
            r += p;
        return (int) r;
    }

    static long solveS(int limit) {
        List<Integer> primes = primesUpTo(limit);
        int m = primes.size();
        if (m == 0)
            return 0;

        int[] xmod = new int[m];
        int[] mmod = new int[m];
        boolean[] hit = new boolean[m];

        for (int j = 0; j < m; j++) {
            xmod[j] = 1;
            mmod[j] = 2 % primes.get(j);
        }

        for (int i = 1; i < m; i++) {
            for (int j = i; j < m; j++) {
                if (!hit[j] && xmod[j] == 0)
                    hit[j] = true;
            }

            int p = primes.get(i);
            int rhs = i + 1;
            int xp = xmod[i];
            int mp = mmod[i];
            int invMp = modInvPrime(mp, p);
            int diff = rhs - xp;
            if (diff < 0)
                diff += p;
            int t = (int) (((long) diff * invMp) % p);

            for (int j = i; j < m; j++) {
                int q = primes.get(j);
                long add = ((long) mmod[j] * t) % q;
                long nx = xmod[j] + add;
                if (nx >= q)
                    nx -= q;
                xmod[j] = (int) nx;
                mmod[j] = (int) (((long) mmod[j] * p) % q);
            }
        }

        long sum = 0;
        for (int j = 0; j < m; j++) {
            if (hit[j])
                sum += primes.get(j);
        }
        return sum;
    }

    public static String solve() {
        return Long.toString(solveS(300000));
    }

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