public class Euler401 {
    static long sumSquaresMod(long n, long mod) {
        if (n == 0)
            return 0;
        long a = n;
        long b = n + 1;
        long c = 2 * n + 1;

        if ((a & 1) == 0)
            a /= 2;
        else
            b /= 2;

        if (a % 3 == 0)
            a /= 3;
        else if (b % 3 == 0)
            b /= 3;
        else
            c /= 3;

        long x = ((a % mod) * (b % mod)) % mod;
        long y = (x * (c % mod)) % mod;
        return y;
    }

    static long sumSquaresRangeMod(long l, long r, long mod) {
        long right = sumSquaresMod(r, mod);
        long left = sumSquaresMod(l - 1, mod);
        long diff = right - left;
        if (diff < 0)
            diff += mod;
        return diff % mod;
    }

    static String solve() {
        long n = 1000000000000000L;
        long mod = 1000000000L;
        long ans = 0;
        long l = 1;

        while (l <= n) {
            long q = n / l;
            long r = n / q;
            long sumD2 = sumSquaresRangeMod(l, r, mod);
            long term = ((q % mod) * sumD2) % mod;
            ans = (ans + term) % mod;
            l = r + 1;
        }

        return Long.toString(ans);
    }

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