import java.util.ArrayList;

public class Euler795 {

    static long solve(int N) {
        int[] spf = new int[N + 1];
        ArrayList<Integer> primes = new ArrayList<>();

        for (int i = 2; i <= N; ++i) {
            if (spf[i] == 0) {
                spf[i] = i;
                primes.add(i);
            }
            for (int p : primes) {
                long v = (long) i * p;
                if (v > N) {
                    break;
                }
                spf[(int) v] = p;
                if (p == spf[i]) {
                    break;
                }
            }
        }

        byte[] exp = new byte[N + 1];
        long[] c = new long[N + 1];
        c[1] = 1;

        for (int n = 2; n <= N; ++n) {
            int p = spf[n];
            int m = n / p;

            if (m % p == 0) {
                int e = exp[m] + 1;
                exp[n] = (byte) e;
                if (e % 2 == 0) {
                    c[n] = c[m] * p * p;
                } else {
                    c[n] = c[m] * p;
                }
            } else {
                exp[n] = 1;
                c[n] = c[m] * (p - 1);
            }
        }

        long oddCount = (N + 1L) / 2L;
        long total = -oddCount * oddCount;

        for (int d = 2; d <= N; d += 2) {
            long m = N / d;
            long tri = m * (m + 1L) / 2L;
            total += c[d] * tri;
        }

        return total;
    }

    public static String getAns() {
        return Long.toString(solve(12345678));
    }

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