#include int query(long long x) { x%=1000000007; return (long long)x*(x+1)/2%1000000007; } int sol(long long x) { int ans=0; long long ii; for(long long i=1;i<=x;i=ii+1) { ii=x/(x/i); int inc=query(ii)-query(i-1); if(inc<0) { inc+=1000000007; } inc=(long long)inc*((x/i)%1000000007)%1000000007; ans+=inc; if(ans>=1000000007) { ans-=1000000007; } } return ans; } int p[1048576],minp[1048576],miu[1048576],cnt=0; int main() { miu[1]=1; for(int i=2;i<=1000000;i++) { if(!minp[i]) { p[cnt]=i; minp[i]=i; miu[i]=1000000006; cnt++; } for(int j=0;j=1000000007) { ans-=1000000007; } } printf("%d\n",ans); } return 0; }