/* -*- coding: utf-8 -*- * * 3534.cc: No.3534 Make Many Fences - yukicoder */ #include #include using namespace std; /* constant */ /* typedef */ using ll = long long; /* global variables */ /* subroutines */ ll calc(int n, int m, int d) { ll nn = n - d, mm = m + (ll)(d / 2) * 4; ll f = min(nn / 4, mm / 2) * 3; return f; } /* main */ int main() { int tn; scanf("%d", &tn); while (tn--) { int n, m; scanf("%d%d", &n, &m); int d0 = 0, d1 = n; while (d0 + 2 < d1) { int dd0 = (d0 * 2LL + d1) / 3; int dd1 = (d0 + d1 * 2LL) / 3; ll f0 = calc(n, m, dd0); ll f1 = calc(n, m, dd1); if (f0 < f1) d0 = dd0; else d1 = dd1; } ll maxf = 0; for (int d = d0; d <= d1; d++) maxf = max(maxf, calc(n, m, d)); printf("%lld\n", maxf); } return 0; }