Public Class Program
  Shared Sub Main()
    Const M As Long = 1000000007
    Dim xy() As Long = Array.ConvertAll(Of String, Long)(Console.ReadLine().Split(" "), AddressOf Long.Parse)
    Dim x As Long = xy(0)
    Dim y As Long = xy(1)
    Dim ans As Long = 0
    ' - 1回の移動で x 座標 + y 座標の値は 3 増えます。よって X + Y が 3 の倍数でない時、答えは 0 です。 '
    ' - (1, 2) の移動回数を n 、(2, 1) の移動回数を m とすると、 n + 2m = X, 2n + m = Y の連立方程式が得られます。 '
    '   これより n = (2Y - X) / 3, m = (2X - Y) / 3 となります。移動回数 n, m は正の整数のため、2Y - X < 0, 2X - Y < 0 の時、答えは 0 です。 '
    If (x + y) Mod 3 = 0 AndAlso 2 * y - x >= 0 AndAlso 2 * x - y >= 0 Then
      ' 移動回数の合計は n + m = (X + Y) / 3 です。このうち (1, 2) の移動回数 n の組み合わせは (n + m)Cn になります。 '
      ans = ModNcr((x + y) / 3, (2 * y - x) / 3, M)
    End If
    Console.WriteLine(ans.ToString())
  End Sub
  
  ' 階乗 n! を m で割った余りを求めます。 '
  Shared Function ModFactorial(n As Long, m As Long) As Long
    Dim result As Long = 1
    For i As Long = 1 To n
      result = (result * i) Mod m
    Next
    Return result
  End Function
  
  ' 累乗 x^y を m で割った余りを求めます。 '
  Shared Function ModPow(x As Long, y As Long, m As Long) As Long
    If y = 0 Then Return 1
    If y Mod 2 = 0 Then
      Dim d As Long = ModPow(x, y / 2, m)
      Return (d * d) Mod m
    Else
      Return (x * ModPow(x, y - 1, m)) Mod m
    End If
  End Function
  
  ' 逆元 (n!)^-1 を m で割った余りを求めます。 '
  ' フェルマーの小定理より (n!)^-1 ≡ (n!)^m-2 となります。 '
  Shared Function ModInverse(n As Long, m As Long) As Long
    Return ModPow(ModFactorial(n, m), m - 2, m) Mod m
  End Function
  
  ' 組み合わせ nCr = n! * (r!)^-1 * ((n - r)!)^-1 を m で割った余りを求めます。 '
  Shared Function ModNcr(n As Long, r As Long, m As Long) As Long
    If n < r Then Return 0
    If n = r Then Return 1
    Return ((ModFactorial(n, m) * ModInverse(r, m)) Mod m) * ModInverse(n - r, m) Mod m
  End Function
End Class