捞钱杯车队
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

在长沙学院举办了一场数学竞赛,参赛者们来自不同的学院和年级。比赛的主题是计算数的因子求和的值。主持人宣布比赛规则后,参赛者们开始认真思考,他们必须在规定时间内计算出 1n 之间所有数的因子求和的值。

比赛场上,有一位学生名叫小迪,他来自计算机科学系,他一直对数学很感兴趣,尤其是在计算因子求和的值方面。小迪一直在思考如何优化计算因子求和的值的算法,他希望能够在比赛中获胜。

但是他由于他脑子不太好,并不会求解这个题。他想到他之前的一个“捞钱杯车队”群,在群里V大伙 50 红包吃KFC,问题几经转手到了你的手里,你能帮助他求解这个题吗?

计算 1n 所有数字的因子之和,由于答案可能过大,所以输出它对 1000000007 取模的结果。


``` c++ []
#include <iostream>

int main() {
    std::cout << "Hello World!";
    return 0;
}
```

输入描述:

一行,一个正整数 n (1\leq n \leq 10^{14})

输出描述:

 一行,一个正整数表示答案。
示例1

输入

复制
6

输出

复制
33