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: Wrong Answer)

#include<iostream>
#include<vector>
#include<utility>
#include<algorithm>
#include<string>
#include<cstdio>
#include<queue>
#include<functional>
#include <tuple>
#include<iomanip>
#include<stack>
#include<cmath>
#define ll long long
#define N 1000000007
using namespace std;
ll power(int x) {
	ll n = 1;
	for (int i = 2; i <= x; ++i) {
		n = n * i % N;
	}
	return n;
}
ll fuc(ll x, ll y) {
	if (y == 0) return 1;
	return y % 2 == 1 ? x * fuc(x, y - 1) % N: fuc(x*x % N, y / 2);
}
int main() {
	int x, y; cin >> x >> y;
	if ((2 * x - y) % 3 != 0 || (2 * y - x) % 3 != 0) {
		cout << "0" << endl;
		return 0;
	}
	int k = (2 * x - y) / 3, l = (2 * y - x) / 3;
	int m = min(k, l);
	cout <<( power(k+l)*fuc(power(m),N-2)%N)*fuc(power(k+l-m),N-2)%N << endl;
	return 0;
}