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

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

mod = 10**9+7

N = 10**6

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 )

if (X+Y)%3!=0:

  print((0))

else:

  n=2*Y-X

  m=2*X-Y

  if n<0 or m<0:

    print((0))

  else:

    n=int(n/3)

    m=int(m/3)

    print((cmb(n+m,m,mod)))
X,Y=list(map(int,input().split()))

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

if (X+Y)%3!=0:

  print((0))

else:

  n=2*Y-X

  m=2*X-Y

  mod=10**9+7

  if n<0 or m<0:

    print((0))

  else:

    n=int(n/3)

    m=int(m/3)

    print((cmb(n+m,m)%mod))
X, Y = list(map(int, input().split()))


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


mod = 10**9 + 7
N = 10**6
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)
if (X + Y) % 3 != 0:
    print((0))
else:
    n = 2 * Y - X
    m = 2 * X - Y
    if n < 0 or m < 0:
        print((0))
    else:
        n = int(n / 3)
        m = int(m / 3)
        print((cmb(n + m, m, mod)))

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


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


if (X + Y) % 3 != 0:
    print((0))
else:
    n = 2 * Y - X
    m = 2 * X - Y
    mod = 10**9 + 7
    if n < 0 or m < 0:
        print((0))
    else:
        n = int(n / 3)
        m = int(m / 3)
        print((cmb(n + m, m) % mod))

-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 +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 -mod = 10**9 + 7 -N = 10**6 -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) +    mod = 10**9 + 7 -        print((cmb(n + m, m, mod))) +        print((cmb(n + m, m) % mod))