QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 512 MB Total points: 100
[0]

# 8953. 士兵游戏

Statistics

小海对军事很感兴趣,所以今天她找了一款军事游戏来玩。

游戏中,小海的士兵有 n 个驻点,标号为 1, ..., n。为了发展经济,小海在驻点之间建了很多通路,具体来说,对于任意一个标号不为1的驻点i,小海修建了一条连接i\frac{i}{h(i)}且距离为1的双向道路,其中h(i)定义为i的最小质因子。(不难证明,所有驻点会形成一棵树)。

为了保护国家的安全,小海决定每一天让士兵在所有点对间巡逻。当然,巡逻也需要一定的开销,具体来说,在驻点i和驻点j间巡逻的开销为两点间的最短距离。

此时小海想知道每一天巡逻的开销是多少,由于答案太大,你只需要输出答案对10^9+7取模的结果即可。

具体来说,小海想要知道 \sum_{i=1}^{n-1}\sum_{j=i+1}^ndis(i,j)\pmod{ 10^9+7} 其中dis(i,j)表示的是ij在这颗树上的最短距离。

输入

一行,一个整数 n,表示驻点数量。

输出

一行,一个整数,表示树的所有点对最短距离和。

样例一

input

6

output

31

样例二

input

50

output

4986

限制与约定

对于100%的数据:n\le 10^{10}

子任务编号 n\le 分值
1 10^5 10
2 5 \cdot 10^7 35
3 10^9 25
4 10^{10} 30

时间限制:3s

空间限制:512MB