#include #define y1 dmytxdy #define fi first #define se second #define mp make_pair using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair pii; typedef pair pll; bool chkmax(int &x,int y){return xy?x=y,true:false;} int readint(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } const int N=1000000; int n,m,tot; int mu[N+5],prm[N+5],fn[N+5]; ll s[N+5],f[N+5]; vector st[N+5]; bool fl[N+5]; void getprime(){ fl[1]=1,mu[1]=1; for(int i=2;i<=N;i++){ if(!fl[i]) prm[++tot]=i,mu[i]=-1,fn[i]=1; for(int j=1;j<=tot&&i*prm[j]<=N;j++){ fl[i*prm[j]]=1; if(i%prm[j]==0){ fn[i*prm[j]]=fn[i]+1,mu[i*prm[j]]=0; break; } fn[i*prm[j]]=1,mu[i*prm[j]]=mu[i]*(-1); } } } int main(){ getprime(); int T=readint(); for(int i=1;i<=N;i++) st[i].push_back(0); for(int i=1;i<=N;i++) for(int j=1;j<=N/i;j++) st[i].push_back(st[i][j-1]+mu[j*i]); for(int i=1;i<=N;i++) for(int j=i;j<=N;j+=i) f[j]+=mu[i]*mu[j/i]; while(T--){ n=readint(); m=readint(); if(n