/* * @Author: hesorchen * @Date: 2020-07-03 17:05:01 * @LastEditTime: 2020-07-19 14:47:14 * @Description: https://hesorchen.github.io/ */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define endl '\n' #define PI acos(-1) #define PB push_back #define ll long long #define INF 0x3f3f3f3f #define mod 1000000007 #define pll pair #define lowbit(abcd) (abcd & (-abcd)) #define max(a, b) ((a > b) ? (a) : (b)) #define min(a, b) ((a < b) ? (a) : (b)) #define IOS \ ios::sync_with_stdio(false); \ cin.tie(0); \ cout.tie(0); #define FRE \ { \ freopen("in.txt", "r", stdin); \ freopen("out.txt", "w", stdout); \ } inline ll read() { ll 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 << 1) + (x << 3) + (ch ^ 48); ch = getchar(); } return x * f; } //head============================================================================== ll dp[1010][1010]; int main() { IOS; for (int j = 1; j <= 1000; j++) dp[j][1] = j; for (int i = 2; i <= 1000; i++) { for (int j = 2; j <= 1000; j++) { if (__gcd(i, j) == 1) dp[i][j] = max(dp[i][j - 1] + 1, dp[i - 1][j] + 1); else dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]); } } ll t; cin >> t; while (t--) { ll a, b; cin >> a >> b; if (a < b) swap(a, b); cout << dp[a][b] << endl; } return 0; }