#include //#include //#pragma optimized("O2") #define sc cerr #define qlog(x) {sc<<#x<<" = "<<(x)<<"\n";} #define rep(i,l,r) for(int i=(l);i<=(r);i++) #define irep(i,r,l) for(int i=(r);i>=(l);i--) #define qloga(a,l,r) {sc<<#a<<": "; rep(I,(l),(r)){sc< prime; memset(mu,0x3f,sizeof(mu)); mu[1]=1; for(int v=2;v1){ mu[v]=-1; prime.push_back(v); } for(int x:prime)if(v*x>n>>m; euler(); static constexpr int M=1e9+7; ll ans=0; rep(d,1,min(n,m)){ ll A=0, B=0; for(int x=d;x<=n;x+=d) A+=n-x; for(int y=d;y<=m;y+=d) B+=m-y; mu[d]=(mu[d]+M)%M; ans+=(A%M)*(B%M)%M*mu[d]%M; } (ans*=2)%=M; ans+=((n-1)*m+(m-1)*n)%M; cout<