// This amazing code is by Eric Sunli Chen. #include using namespace std; template bool get_int(T &x) { char t=getchar(); bool neg=false; x=0; for(; (t>'9'||t<'0')&&t!='-'&&t!=EOF; t=getchar()); if(t=='-')neg=true,t=getchar();if(t==EOF)return false; for(; t<='9'&&t>='0'; t=getchar())x=x*10+t-'0'; if(neg)x=-x;return true; } template void print_int(T x) { if(x<0)putchar('-'),x=-x; short a[20]= {},sz=0; while(x>0)a[sz++]=x%10,x/=10; if(sz==0)putchar('0'); for(int i=sz-1; i>=0; i--)putchar('0'+a[i]); } #define ff first #define ss second #define pb push_back #define mp make_pair #define get1(a) get_int(a) #define get2(a,b) (get1(a)&&get1(b)) #define get3(a,b,c) (get1(a)&&get2(b,c)) #define printendl(a) print_int(a),puts("") typedef long long LL; typedef unsigned long long uLL; typedef pair pii; const int inf=0x3f3f3f3f; const LL Linf=1ll<<61; const double pi=acos(-1.0); const int maxn=1000111; int mu[maxn],pre[maxn]; int sum[maxn],n,m; void solve() { scanf("%d%d",&n,&m);if(n>m)swap(n,m); memset(sum,0,sizeof(int)*(n+3)); for(int i=1;i<=n;i++)for(int j=1;i*j<=n;j++)sum[i*j]+=mu[i]*mu[j]; LL ans=0; for(int i=1;i<=n;i++) { int s1=0,s2=0; for(int j=i;j<=n;j+=i)s1+=mu[j]; for(int j=i;j<=m;j+=i)s2+=mu[j]; ans+=(LL)sum[i]*s1*s2; } printf("%I64d\n",ans); } int main() { mu[1]=1; for(int i=1;i