Problem:
Score : 400 points

Problem Statement

There is a knight - the chess piece - at the origin (0, 0) of a two-dimensional grid.

When the knight is at the square (i, j), it can be moved to either (i+1,j+2) or (i+2, j+1).

In how many ways can the knight reach the square (X, Y)?

Find the number of ways modulo 10^9 + 7.

Constraints

1 \leq X \leq 10^6

1 \leq Y \leq 10^6

All values in input are integers.

Input

Input is given from Standard Input in the following format:

X Y

Output

Print the number of ways for the knight to reach (X, Y) from (0, 0), modulo 10^9 + 7.

Sample Input 1

3 3

Sample Output 1

2

There are two ways: (0,0) \to (1,2) \to (3,3) and (0,0) \to (2,1) \to (3,3).

Sample Input 2

2 2

Sample Output 2

0

The knight cannot reach (2,2).

Sample Input 3

999999 999999

Sample Output 3

151840682

Print the number of ways modulo 10^9 + 7.

Solution in C++14 (GCC 5.4.1) (judge verdict: Runtime Error)

#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define ft first
#define sd second
#define pb push_back
using namespace std;
const ll mod = 1e9+7;

ll power(ll a, ll b, ll m = mod) {
    ll x = 1;
    while(b) {
        if(b & 1) {
            x = 1ll * x * a % m;
        }
        a = 1ll * a * a % m;
        b /= 2;
    }
    return x;
}

const int N = 2e6+9;
// int a[N];
ll f[N], invf[N];
signed main() {  
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);  
    f[0] = 1;  
    for(int i = 1; i < N-4; i++) {
        f[i] = f[i-1] * i % mod;
        invf[i] = power(f[i], mod-2);
    }

    int x, y; cin >> x >> y;
    if((x + y) % 3 != 0) {
        return cout << "0\n", 0;
    }
    int n = (x + y) / 3;
    int a = x - n, b = y - n;
    cout << (f[a + b] * invf[a] % mod * invf[b] % mod) << endl;

    
    
    


    return 0;
    
}