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 Ruby (2.3.3) (judge verdict: Accepted)

MOD=10**9+7
cnt=0; sum=0; prev=nil; can=true; h=Hash.new(0)
def gs() gets.chomp end
def gi() gets.to_i end
def gsmi() gets.chomp.split.map(&:to_i) end

def desc(ar) ar.sort!{|x,y|y<=>x} end
def min(a,b) a<=b ? a : b end
def max(a,b) a>=b ? a : b end
def sum(ar) ar.inject(:+) end

#def C(a,b) b==0||a==b ? 1 : (b=a-b if a/2<b;(a-b+1..a).inject(:*)/(1..b).inject(:*)) end

def puts_yesno(can) puts(can ? 'Yes' : 'No') end
def putsend(s) puts s; exit end
def debug(k,v) puts "#{k}:#{v}" end
########### ( ˘ω˘ )ｽﾔｧ… ###########
# D問題なんてさっさと解いて、いっぱいすやすやしようね( ˘ω˘ )ｽﾔｧ
# ( ˘ω˘ )ｽﾔｧ ( ˘ω˘ )ｽﾔｧ ( ˘ω˘ )ｽﾔｧ ( ˘ω˘ )ｽﾔｧ ( ˘ω˘ )ｽﾔｧ
xx,yy=gsmi

if (xx+yy)%3 != 0 || (2*xx-yy)%3 != 0 || (2*yy-xx)%3 != 0 ||2*xx-yy<0||2*yy-xx<0
  putsend 0
end

#横型
ca=(2*xx-yy)/3
#縦型
cb=(2*yy-xx)/3

def C(a,b)
  if b==0||a==b
    1
  else
    b=a-b if a/2<b
    x=(a-b+1..a).inject(1){|res,i|res*i%MOD}
    y=(1..b).inject(1){|res,i|res*i%MOD}
    require 'openssl'
    yn=OpenSSL::BN.new(y).mod_inverse(MOD)
    x*yn
  end
end

puts C(ca+cb,ca)%MOD