import java.util.BitSet;

public class Euler772 {

    static final long MOD = 1000000007L;

    static int[] oddSievePrimes(int n) {
        if (n < 2)
            return new int[0];
        if (n == 2)
            return new int[] { 2 };

        int m = (n - 1) / 2;
        BitSet composite = new BitSet(m);

        for (int i = 0; (2L * i + 3) * (2L * i + 3) <= n; i++) {
            if (!composite.get(i)) {
                int p = 2 * i + 3;
                long j = ((long) p * p - 3) / 2;
                while (j < m) {
                    composite.set((int) j);
                    j += p;
                }
            }
        }

        int count = 1;
        for (int i = 0; i < m; i++) {
            if (!composite.get(i))
                count++;
        }

        int[] primes = new int[count];
        primes[0] = 2;
        int idx = 1;
        for (int i = 0; i < m; i++) {
            if (!composite.get(i)) {
                primes[idx++] = 2 * i + 3;
            }
        }
        return primes;
    }

    static long lcmUptoMod(int k) {
        int[] primes = oddSievePrimes(k);
        long ans = 1;

        for (int p : primes) {
            long pw = p;
            long limit = k / p;
            while (pw <= limit) {
                pw *= p;
            }
            ans = (ans * (pw % MOD)) % MOD;
        }
        return ans;
    }

    static long fMod(int k) {
        long l = lcmUptoMod(k);
        return (2L * l) % MOD;
    }

    public static String solve() {
        long ans = fMod(100000000);
        return Long.toString(ans);
    }

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