Problem:
Score : 700 points

Problem Statement

10^{10^{10}} participants, including Takahashi, competed in two programming contests.
In each contest, all participants had distinct ranks from first through 10^{10^{10}}-th.

The score of a participant is the product of his/her ranks in the two contests.

Process the following Q queries:

In the i-th query, you are given two positive integers A_i and B_i. Assuming that Takahashi was ranked A_i-th in the first contest and B_i-th in the second contest, find the maximum possible number of participants whose scores are smaller than Takahashi's.

Constraints

1 \leq Q \leq 100

1\leq A_i,B_i\leq 10^9(1\leq i\leq Q)

All values in input are integers.

Input

Input is given from Standard Input in the following format:

Q
A_1 B_1
:
A_Q B_Q

Output

For each query, print the maximum possible number of participants whose scores are smaller than Takahashi's.

Sample Input 1

8
1 4
10 5
3 3
4 11
8 9
22 40
8 36
314159265 358979323

Sample Output 1

1
12
4
11
14
57
31
671644785

Let us denote a participant who was ranked x-th in the first contest and y-th in the second contest as (x,y).

In the first query, (2,1) is a possible candidate of a participant whose score is smaller than Takahashi's. There are never two or more participants whose scores are smaller than Takahashi's, so we should print 1.

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;

typedef pair<int, int> ii;
typedef pair<ll, ll> pll;

ll sma2(ll a, ll b){
	ll p = a * b;
	ll j1 = 1, j2 = p;
	ll res = 0;
	while ( j1 <= j2 ){
		if ( j1 == a )
			j1++;
		j2 -= (j1 * (j2 + 1) - p) / j1; 
		if ( j2 == b )
			j2--;
		if ( j2 > 0 ){
			res++;
			if ( j1 != b && j2 != a && j1 != j2 )
				res++;
		}
		j1++;
		j2--;
	}
	
	return res;
}

ll sma(ll a, ll b){
	ll p = a * b;
	ll sq = sqrt(p);
	ll res = 2 * sq;
	
	if ( sq * sq == p && a != b )
		res -= 3;
	else if ( a == b || sq * (sq + 1LL) >= p || sq == a || sq == b)
		res -= 2;
	else
		res--;
	return res;
}


int main( int argc, char *argv[] ) {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int q;
	ll a, b;
	cin >> q;
	for ( int i = 0 ; i < q ; i++ ){
		cin >> a >> b;

		cout << sma(a,b) << endl;
	}

	return 0;
}