import java.util.*;
import java.io.*;
class Ramen {
static final long MOD = 1_000_000_007;
long N
= Long.
parseLong(br.
readLine()); out.println(solve(N) % MOD);
br.close();
out.close();
}
static long solve(long N) {
long ans = 1;
for (long d = 1; d * d <= N; d++) {
if (N % d == 0) {
long inc = d * phi(d);
ans = (ans + inc % MOD) % MOD;
if (d * d != N) {
inc = (N/d % MOD) * phi(N/d);
ans = (ans + inc % MOD) % MOD;
}
}
}
return (ans * (N%MOD) % MOD) * 500000004 % MOD;
// 500000004 is 2^-1 mod (10^9 + 7)
}
static long phi(long N) {
long ans = N;
for (long p = 2; p * p <= N; p++) {
if (N % p == 0) {
while (N % p == 0) N /= p;
ans -= ans / p;
}
}
if (N > 1) ans -= ans / N;
return ans % MOD;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwoKY2xhc3MgUmFtZW4gewogICAgCiAgICBzdGF0aWMgZmluYWwgbG9uZyBNT0QgPSAxXzAwMF8wMDBfMDA3OwogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKTsKICAgICAgICBQcmludFdyaXRlciBvdXQgPSBuZXcgUHJpbnRXcml0ZXIoU3lzdGVtLm91dCk7CiAgICAgICAgbG9uZyBOID0gTG9uZy5wYXJzZUxvbmcoYnIucmVhZExpbmUoKSk7CiAgICAgICAgb3V0LnByaW50bG4oc29sdmUoTikgJSBNT0QpOwogICAgICAgIGJyLmNsb3NlKCk7CiAgICAgICAgb3V0LmNsb3NlKCk7CiAgICB9CiAgICAKICAgIHN0YXRpYyBsb25nIHNvbHZlKGxvbmcgTikgewogICAgICAgIGxvbmcgYW5zID0gMTsKICAgICAgICBmb3IgKGxvbmcgZCA9IDE7IGQgKiBkIDw9IE47IGQrKykgewogICAgICAgICAgICBpZiAoTiAlIGQgPT0gMCkgewogICAgICAgICAgICAgICAgbG9uZyBpbmMgPSBkICogcGhpKGQpOwogICAgICAgICAgICAgICAgYW5zID0gKGFucyArIGluYyAlIE1PRCkgJSBNT0Q7CiAgICAgICAgICAgICAgICBpZiAoZCAqIGQgIT0gTikgewogICAgICAgICAgICAgICAgICAgIGluYyA9IChOL2QgJSBNT0QpICogcGhpKE4vZCk7CiAgICAgICAgICAgICAgICAgICAgYW5zID0gKGFucyArIGluYyAlIE1PRCkgJSBNT0Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIChhbnMgKiAoTiVNT0QpICUgTU9EKSAqIDUwMDAwMDAwNCAlIE1PRDsKICAgICAgICAvLyA1MDAwMDAwMDQgaXMgMl4tMSBtb2QgKDEwXjkgKyA3KQogICAgfQogICAgCiAgICBzdGF0aWMgbG9uZyBwaGkobG9uZyBOKSB7CiAgICAgICAgbG9uZyBhbnMgPSBOOwogICAgICAgIGZvciAobG9uZyBwID0gMjsgcCAqIHAgPD0gTjsgcCsrKSB7CiAgICAgICAgICAgIGlmIChOICUgcCA9PSAwKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoTiAlIHAgPT0gMCkgTiAvPSBwOwogICAgICAgICAgICAgICAgYW5zIC09IGFucyAvIHA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKE4gPiAxKSBhbnMgLT0gYW5zIC8gTjsKICAgICAgICByZXR1cm4gYW5zICUgTU9EOwogICAgfQogICAgCn0K