import java.util.*;
import java.io.*;

class Ramen {
    
    static final long MOD = 1_000_000_007;
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out);
        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;
    }
    
}
