#include using namespace std; #define mp make_pair #define pb push_back #define x first #define y second typedef pair pii; typedef long long ll; typedef unsigned long long ull; template void chkmax(T &x,T y){x void chkmin(T &x,T y){x>y?x=y:T();} template void readint(T &x) { x=0;int f=1;char c; for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1; for(;isdigit(c);c=getchar())x=x*10+c-'0'; x*=f; } /*const int MOD=; inline int dmy(int x){return x>=MOD?x-MOD:x;} inline void inc(int &x,int y){x=dmy(x+y);} int qmi(int x,int y) { int ans=1; for(;y;y>>=1,x=1ll*x*x%MOD) if(y&1)ans=1ll*ans*x%MOD; return ans; }*/ const int MAXN=1005; int gcd(int x,int y){return y?gcd(y,x%y):x;} int f[MAXN][MAXN]; void solve() { int x,y; readint(x),readint(y); printf("%d\n",f[x][y]); } int main() { f[1][1]=1; for(int i=1;i<=1000;++i) for(int j=1;j<=1000;++j) { int t=(gcd(i,j)==1); if(i>1)chkmax(f[i][j],f[i-1][j]+t); if(j>1)chkmax(f[i][j],f[i][j-1]+t); } int T; readint(T); while(T--)solve(); return 0; }