#include<bits/stdc++.h>
using namespace std ;
int main () {
	long long n , m , h=0 , res=0 ;
	cin>>n>>m;
	h=m/2;
	if(n>=h)
	res=h;
	else if(n<h)
	res=n+(h-n)/2;
	cout<<res<<"\n";
}
### Prompt

Develop a solution in cpp to the problem described below:

Snuke loves puzzles.

Today, he is working on a puzzle using `S`- and `c`-shaped pieces. In this puzzle, you can combine two `c`-shaped pieces into one `S`-shaped piece, as shown in the figure below:

9b0bd546db9f28b4093d417b8f274124.png

Snuke decided to create as many `Scc` groups as possible by putting together one `S`-shaped piece and two `c`-shaped pieces.

Find the maximum number of `Scc` groups that can be created when Snuke has N `S`-shaped pieces and M `c`-shaped pieces.

Constraints

* 1 ≤ N,M ≤ 10^{12}

Input

The input is given from Standard Input in the following format:


N M


Output

Print the answer.

Examples

Input

1 6


Output

2


Input

12345 678901


Output

175897

### Response

```cpp
#include<bits/stdc++.h>
using namespace std ;
int main () {
	long long n , m , h=0 , res=0 ;
	cin>>n>>m;
	h=m/2;
	if(n>=h)
	res=h;
	else if(n<h)
	res=n+(h-n)/2;
	cout<<res<<"\n";
}
```