public class Euler688 {
    public static String solve() {
        long N = 10000000000000000L;
        long MOD = 1000000007L;
        long INV2 = (MOD + 1L) / 2L;

        long ans = 0;

        for (long k = 1;; ++k) {
            long c = k * (k - 1) / 2;
            if (c >= N) {
                break;
            }

            long M = N - c;
            long q = M / k;
            long r = M % k;

            long qMod = q % MOD;

            long term1 = ((k % MOD) * qMod) % MOD;
            term1 = (term1 * ((q - 1 + MOD) % MOD)) % MOD;
            term1 = (term1 * INV2) % MOD;

            long term2 = (qMod * ((r + 1) % MOD)) % MOD;

            ans = (ans + term1 + term2) % MOD;
        }

        return Long.toString(ans);
    }

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