//题意:给你一个数 n 求不大于n且与n非互质的数的和。
// 欧拉函数 小于或等于n且与n互质的个数
//做这道题目: 要想真正掌握一些知识 你必须研究透彻。
//小于test与test互质的数的和test*Phi(test)/2;
//其中phi(test)代表test欧拉函数的个数。
// 同时今天也学习了( 指数幂 求约数的个数)
//20 2^2*5-- (2+1)*(1+1)=6;
#include<stdio.h>
#include<math.h>
#define max 1000000007
long long phi(long long n)//求欧拉函数的个数
{
if(n==1) return 1;
long long i=2,m=n,big=(long long)sqrt((double)m);
while(i<=big)
{
if(m%i==0)
{
n-=n/i;//利用容斥原理 把包含i约数的数的个数全部清除。
do
{
m/=i;
}
while(m%i==0);
big=(long long)sqrt((double)m);
}
i++;
}
if(m!=1)
{
n-=n/m;
}
return n;
}
int main()
{
long long test,ans;
while(scanf("%lld",&test),test)
{
ans=((test*(test-1))/2)%max;
ans-=(phi(test)*test/2)%max;
if(ans<0)
ans+=max;
printf("%lld\n",ans);
}
return 0;
}