3 4 0
0 2
//
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
//phi(n)*n/2求得所以小于n且与n互质的数之和,
//再用所有小于n的和减去它就为结果。
const int maxn=110000;
int flag[maxn],pri[maxn],pl;
void _prime()
{
for(int i=2;i<maxn;i++)
{
if(flag[i]==0) pri[pl++]=i;
for(int j=0;j<pl&&i*pri[j]<maxn;j++)
{
flag[i*pri[j]]=1;
if(i%pri[j]==0) break;
}
}
}
int phi(int n)
{
int ans=n;
for(int i=0;i<pl&&pri[i]*pri[i]<=n;i++)
{
if(n%pri[i]==0)
{
ans-=ans/pri[i];
while(n%pri[i]==0) n/=pri[i];
}
}
if(n>1) ans-=ans/n;
return ans;
}
int main()
{
_prime();
int n;
int mod=1000000007;
while(scanf("%d",&n)==1&&n)
{
int tmp=((long long)n*(n-1)/2)%mod;
int sf=((long long)phi(n)*n/2)%mod;
int ans=tmp-sf;
printf("%d\n",(ans%mod+mod)%mod);
}
return 0;
}