#include using namespace std; #define ll long long ll ans; ll f[1000010],g[1000010]; int miu[1000010],p[1000010],t,n,m,tot; bool bo[1000010]; inline int rd() { int x=0;char ch=getchar(); for (;ch<'0'||ch>'9';ch=getchar()); for (;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; return x; } inline void pre_gao() { miu[1]=1;tot=0; for (int i=2;i<=1000000;i++) { if (!bo[i]) p[++tot]=i,miu[i]=-1; for (int j=1;j<=tot&&i*p[j]<=1000000;j++) { bo[i*p[j]]=true; if (i%p[j]==0) break; miu[i*p[j]]=miu[i]*miu[p[j]]; } } for (int i=1;i<=1000000;i++) { f[i]=miu[i]-g[i]; for (int j=i*2;j<=1000000;j+=i) g[j]+=f[i]; } } inline void gao() { n=rd();m=rd();ans=0; for (int i=1;i<=min(n,m);i++) { ll sum1=0,sum2=0; for (int j=i;j<=n;j+=i) sum1+=miu[j]; for (int j=i;j<=m;j+=i) sum2+=miu[j]; ans+=sum1*sum2*f[i]; } printf("%I64d\n",ans); } int main() { t=rd();pre_gao(); while (t--) gao(); return 0; }