#include #include #include #include #include #include #include #include #include #include #include #include #include //#include #include #include typedef long long ll; //#pragma comment(linker, "/STACK:1024000000,1024000000") #define mm(a) memset(a,0,sizeof(a)) #define lr rt<<1 #define rr rt<<1|1 #define sync std::ios::sync_with_stdio(false);std::cin.tie(0); #define inf 0x3f3f3f3f //#define eqs 1e-8 #define lb(x) (x&(-x)) #define ch(a) (int(a-'a')+1) #define rep(i,a,b) for(int i=a;i<=b;i++) #define mkp(a,b) make_pair(a,b) using namespace std; typedef pair pii; const double pi=acos(-1); const int maxn=1010; //const ll Mod=1000000007; const ll Mod=998244353; long long gcd(long long a,long long b) { if(a==0) return 1; if(a<0) return gcd(-a,b); while(b) { long long t=a%b; a=b; b=t; } return a; } int dp[1010][1010]; int a[10]; int main() { sync; dp[0][0]=1; dp[1][1]=1; int gd; int f; for(int i=1;i<=1000;i++) { for(int j=i;j<=1000;j++) { if(i==1&&j==1) continue; if(gcd(i,j)==1) gd=1; else gd=0; dp[i][j]=max(dp[i][j-1],dp[i-1][j])+gd; } } int t; scanf("%d",&t); while(t--) { scanf("%d%d",&a[0],&a[1]); sort(a,a+2); printf("%d\n",dp[a[0]][a[1]]); } return 0; }