#include<cstdio>
const int sz=2e6+1;
long long n,phi[sz]={0,1};
long long t;
int main(){
scanf("%lld",&n);
for(int i=2;i<=n;i++){
if(phi[i]) continue;
for(int j=i;j<=n;j+=i){
if(!phi[j]) phi[j]=j;
phi[j]=phi[j]/i*(i-1);
}
}
for(int i=1;i<=n;i++) phi[i]+=phi[i-1];
for(int l=1,r;l<=n;l=r+1){
r=n/(n/l);
t+=(phi[r]-phi[l-1])*(n/l)*(n/l);
}
t=(t-(n*(n+1)/2))/2;
printf("%lld",t);
}
无视效率低下的求phi值,为什么我的sz开1e6不CE开到2e6就CE了?