A. Shovels and Swords

Polycarp plays a well-known computer game (we won't mention its name). In this game, he can craft tools of two types — shovels and swords. To craft a shovel, Polycarp spends two sticks and one diamond; to craft a sword, Polycarp spends two diamonds and one stick.

Each tool can be sold for exactly one emerald. How many emeralds can Polycarp earn, if he has a sticks and bbdiamonds?

Input

The first line contains one integer t (1≤t≤1000) — the number of test cases.

The only line of each test case contains two integers a and b (0≤a,b≤109) — the number of sticks and the number of diamonds, respectively.

Output

For each test case print one integer — the maximum number of emeralds Polycarp can earn.

Example

input

Copy

4
4 4
1000000000 0
7 15
8 7

output

Copy

2
0
7
5

Note

In the first test case Polycarp can earn two emeralds as follows: craft one sword and one shovel.

In the second test case Polycarp does not have any diamonds, so he cannot craft anything.

就是有n个零件a,m个零件b,2个a和1个b   或者    2个b和1个a  就可以换一块钱,问最多换多少

#pragma GCC optimize(2)
#include 
#define rush() int T;cin>>T;while(T--)
#define go(a) while(cin>>a)
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int N=1e5+5;
 
    int n,m,t;
    int i,j,k;
 
int32_t main()
{
    IOS;
    rush(){
        ll a,b,ans;
        cin>>a>>b;
        if(a=2*b){ans=b;}
        else{
            ll x=a-b;
            a=a-2*x;b=b-x;
            ans=x+a/3*2;
            if(a%3==2) ans++;
        }
        cout<

 

 

你可能感兴趣的:(CF,#,贪心算法)