#include <bits/stdc++.h>
using namespace std;

int main(){

  long long N, M;
  cin >> N >> M;

  if(2*N > M){
    cout << M/2 << endl;
  }else{
    cout << N + (M - 2*N)/4 << endl;
  }

  return 0;
}

### Prompt

Generate a Cpp solution to the following problem:

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;
  cin >> N >> M;

  if(2*N > M){
    cout << M/2 << endl;
  }else{
    cout << N + (M - 2*N)/4 << endl;
  }

  return 0;
}

```