#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
using namespace std;
typedef long long ll;
int mod=1000000007;
int n;
int work(int n)
{
int ans1=((ll)n*(n-1)/2)%mod,m=n;//等差数列求和,ll
int ans=n,sq=(int)sqrt(n);
for (int i=2;i<=sq;i++)
if (n%i==0)
{
ans=ans/i*(i-1);
while (n%i==0) n/=i;
}
if (n>1) ans=ans/n*(n-1);//求欧拉函数
int ans2=((ll)ans*m/2)%mod;//小于n互质的数之和
return ((ans1-ans2)%mod+mod)%mod;
}
int main()
{
while (scanf("%d",&n)!=EOF)
{
if (n==0) break;
printf("%d\n",work(n));
}
return 0;
}