#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define LOG(FMT...) fprintf(stderr, FMT) using namespace std; typedef long long ll; typedef unsigned long long ull; // mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); template istream& operator>>(istream& is, vector& v) { for (T& x : v) is >> x; return is; } template ostream& operator<<(ostream& os, const vector& v) { if (!v.empty()) { os << v.front(); for (int i = 1; i < v.size(); ++i) os << ' ' << v[i]; } return os; } int gc[1001][1001]; int dp[1001][1001]; int main() { #ifdef ELEGIA freopen("test.in", "r", stdin); int nol_cl = clock(); #endif ios::sync_with_stdio(false); cin.tie(nullptr); function gcd = [&](int x, int y) { if (gc[x][y]) return gc[x][y]; return gc[x][y] = (x ? gcd(y % x, x) : y); }; for (int i = 1; i <= 1000; ++i) for (int j = 1; j <= 1000; ++j) { if (i > 1) dp[i][j] = max(dp[i][j], dp[i - 1][j]); if (j > 1) dp[i][j] = max(dp[i][j], dp[i][j - 1]); dp[i][j] += (gcd(i, j) == 1); } int t; cin >> t; while (t--) { int x, y; cin >> x >> y; cout << dp[x][y] << '\n'; } #ifdef ELEGIA LOG("Time: %dms\n", int ((clock() -nol_cl) / (double)CLOCKS_PER_SEC * 1000)); #endif return 0; }