#include using namespace std; using ll = long long; using i128 = __int128; using pll = pair; using vll = vector; template using max_heap = priority_queue; template using min_heap = priority_queue, greater<>>; constexpr ll INF = (1LL << 60); ll ALPHABET_N = 26; #define rep(i, n) for (ll i = (ll)0; i < (ll)n; i++) #define rep_(i, k, n) for (ll i = (ll)k; i < (ll)n; i++) #define rrep(i, n) for (ll i = (ll)(n) - 1; i >= 0; i--) #define all(a) a.begin(), a.end() #define sum_(a) accumulate(a.begin(), a.end(), 0LL) template bool chmax(T &a, const T &b) { if (a < b) { a = b; return true; } return false; } template bool chmin(T &a, const T &b) { if (a > b) { a = b; return true; } return false; } #include using namespace atcoder; using mint = modint998244353; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll t; cin>>t; rep(_, t) { ll n, m; cin>>n>>m; if(n % 2 == 1) n--; if(m % 2 == 1) m--; ll cnt = min(n / 4, m / 2); n -= cnt * 4; m -= cnt * 2; ll ans = cnt; if(n > 0) { ll l = 0, r = n + 1; while(r - l > 1) { ll mid = (l + r) / 2; ll usen = mid * 4; ll n_ = n - usen; ll m_ = m + (n_ / 2 * 4); m_ = m_ - mid * 2; if(n_ >= 0 && m_ >= 0) { l = mid; } else { r = mid; } } ans += l; } cout<