import sys

sys.setrecursionlimit(10**7)

import math



def cmb(n, r):

    if n - r < r: r = n - r

    if r == 0: return 1

    if r == 1: return n

    numerator = [n - r + k + 1 for k in range(r)]

    denominator = [k + 1 for k in range(r)]

    for p in range(2,r+1):

        pivot = denominator[p - 1]

        if pivot > 1:

            offset = (n - r) % p

            for k in range(p-1,r,p):

                numerator[k - offset] /= pivot

                denominator[k] /= pivot

    result = 1

    for k in range(r):

        if numerator[k] > 1:

            result *= int(numerator[k])



    return result



z = 10**9+7



X, Y = list(map(int, input().split()))

x = (-X+2*Y)/3

y = (2*X-Y)/3

if x.is_integer() and y.is_integer() and x>=0 and y>=0:

    x = int(x)

    y = int(y)

    maximam = max(x,y)

    minimam = min(x,y)

    print((cmb(x+y,minimam)%z))

else:

    print((0))
import sys

sys.setrecursionlimit(10**7)

import math



def cmb(n, r, mod):

    if ( r<0 or r>n ):

        return 0

    r = min(r, n-r)

    return g1[n] * g2[r] * g2[n-r] % mod



X, Y = list(map(int, input().split()))

x = (-X+2*Y)/3

y = (2*X-Y)/3

if x.is_integer() and y.is_integer() and x>=0 and y>=0:

    x = int(x)

    y = int(y)

    maximam = max(x,y)

    minimam = min(x,y)

    mod = 10**9+7 #出力の制限

    N = x+y

    g1 = [1, 1] # 元テーブル

    g2 = [1, 1] #逆元テーブル

    inverse = [0, 1] #逆元テーブル計算用テーブル

    for i in range( 2, N + 1 ):

        g1.append( ( g1[-1] * i ) % mod )

        inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )

        g2.append( (g2[-1] * inverse[-1]) % mod )

    print((cmb(x+y,minimam,mod)))

else:

    print((0))
import sys

sys.setrecursionlimit(10**7)
import math


def cmb(n, r):
    if n - r < r:
        r = n - r
    if r == 0:
        return 1
    if r == 1:
        return n
    numerator = [n - r + k + 1 for k in range(r)]
    denominator = [k + 1 for k in range(r)]
    for p in range(2, r + 1):
        pivot = denominator[p - 1]
        if pivot > 1:
            offset = (n - r) % p
            for k in range(p - 1, r, p):
                numerator[k - offset] /= pivot
                denominator[k] /= pivot
    result = 1
    for k in range(r):
        if numerator[k] > 1:
            result *= int(numerator[k])
    return result


z = 10**9 + 7
X, Y = list(map(int, input().split()))
x = (-X + 2 * Y) / 3
y = (2 * X - Y) / 3
if x.is_integer() and y.is_integer() and x >= 0 and y >= 0:
    x = int(x)
    y = int(y)
    maximam = max(x, y)
    minimam = min(x, y)
    print((cmb(x + y, minimam) % z))
else:
    print((0))

import sys

sys.setrecursionlimit(10**7)
import math


def cmb(n, r, mod):
    if r < 0 or r > n:
        return 0
    r = min(r, n - r)
    return g1[n] * g2[r] * g2[n - r] % mod


X, Y = list(map(int, input().split()))
x = (-X + 2 * Y) / 3
y = (2 * X - Y) / 3
if x.is_integer() and y.is_integer() and x >= 0 and y >= 0:
    x = int(x)
    y = int(y)
    maximam = max(x, y)
    minimam = min(x, y)
    mod = 10**9 + 7  # 出力の制限
    N = x + y
    g1 = [1, 1]  # 元テーブル
    g2 = [1, 1]  # 逆元テーブル
    inverse = [0, 1]  # 逆元テーブル計算用テーブル
    for i in range(2, N + 1):
        g1.append((g1[-1] * i) % mod)
        inverse.append((-inverse[mod % i] * (mod // i)) % mod)
        g2.append((g2[-1] * inverse[-1]) % mod)
    print((cmb(x + y, minimam, mod)))
else:
    print((0))

-def cmb(n, r): -    if n - r < r: -        r = n - r -    if r == 0: -        return 1 -    if r == 1: -        return n -    numerator = [n - r + k + 1 for k in range(r)] -    denominator = [k + 1 for k in range(r)] -    for p in range(2, r + 1): -        pivot = denominator[p - 1] -        if pivot > 1: -            offset = (n - r) % p -            for k in range(p - 1, r, p): -                numerator[k - offset] /= pivot -                denominator[k] /= pivot -    result = 1 -    for k in range(r): -        if numerator[k] > 1: -            result *= int(numerator[k]) -    return result +def cmb(n, r, mod): +    if r < 0 or r > n: +        return 0 +    r = min(r, n - r) +    return g1[n] * g2[r] * g2[n - r] % mod -z = 10**9 + 7 -    print((cmb(x + y, minimam) % z)) +    mod = 10**9 + 7  # 出力の制限 +    N = x + y +    g1 = [1, 1]  # 元テーブル +    g2 = [1, 1]  # 逆元テーブル +    inverse = [0, 1]  # 逆元テーブル計算用テーブル +    for i in range(2, N + 1): +        g1.append((g1[-1] * i) % mod) +        inverse.append((-inverse[mod % i] * (mod // i)) % mod) +        g2.append((g2[-1] * inverse[-1]) % mod) +    print((cmb(x + y, minimam, mod)))