import java.util.ArrayList;
import java.util.HashMap;

public class Euler643 {

    static final long kMod = 1000000007L;
    static final long kInv2 = 500000004L;

    static class PhiSummatory {
        int limit;
        ArrayList<Integer> primes;
        int[] lp;
        int[] phi;
        long[] pref;
        HashMap<Long, Long> memo;

        PhiSummatory(int n) {
            limit = n;
            lp = new int[n + 1];
            phi = new int[n + 1];
            pref = new long[n + 1];
            primes = new ArrayList<>(n / 10);
            memo = new HashMap<>();

            phi[1] = 1;
            for (int i = 2; i <= n; ++i) {
                if (lp[i] == 0) {
                    lp[i] = i;
                    primes.add(i);
                    phi[i] = i - 1;
                }
                for (int p : primes) {
                    if (p > lp[i] || (long) i * p > n)
                        break;
                    lp[i * p] = p;
                    if (p == lp[i]) {
                        phi[i * p] = phi[i] * p;
                        break;
                    }
                    phi[i * p] = phi[i] * (p - 1);
                }
            }
            for (int i = 1; i <= n; ++i) {
                pref[i] = (pref[i - 1] + phi[i]) % kMod;
            }
        }

        long sum_phi(long n) {
            if (n <= limit)
                return pref[(int) n];
            Long val = memo.get(n);
            if (val != null)
                return val;

            long nn = n % kMod;
            long res = (nn * ((n + 1) % kMod)) % kMod;
            res = (res * kInv2) % kMod;

            for (long l = 2; l <= n;) {
                long q = n / l;
                long r = n / q;
                long cnt = (r - l + 1) % kMod;
                res = (res + kMod - (cnt * sum_phi(q)) % kMod) % kMod;
                l = r + 1;
            }

            memo.put(n, res);
            return res;
        }
    }

    static long solveImpl(long n, PhiSummatory ph) {
        long ans = 0;
        for (long m = n / 2; m >= 2; m /= 2) {
            long add = (ph.sum_phi(m) + kMod - 1) % kMod;
            ans = (ans + add) % kMod;
        }
        return ans;
    }

    public static String solve() {
        PhiSummatory ph = new PhiSummatory(5000000);
        long ans = solveImpl(100000000000L, ph);
        return Long.toString(ans);
    }

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