#include #define rep(i, l, r) for(int i = (l), i##end = (r);i <= i##end;++i) using std::cin; using std::cout; using u32 = unsigned; using u64 = unsigned long long; using ll = long long; int n, m; const int N = 2010; int dp[N][N]; inline int ask(int x, int y) { if(x==0||y==0)return -1e9; if(x==1&&y==1)return 1; if(~dp[x][y])return dp[x][y]; return dp[x][y]=std::max(ask(x-1,y),ask(x,y-1))+(std::__gcd(x,y)==1); } int main() { memset(dp, -1, sizeof dp); std::ios::sync_with_stdio(false), cin.tie(0); int test; cin >> test; for(int i = 0,a,b;i < test;++i) { cin >> a >> b; cout << ask(a, b) << '\n'; } }