#AT1218. 骑士

骑士

配点 : 400400 点

問題文

二次元グリッドの原点 (0,0)(0,0) にチェスのナイトの駒があります。

ナイトの駒はマス (i,j)(i,j) にあるとき (i+1,j+2)(i+1,j+2) か (i+2,j+1)(i+2, j+1) のどちらかのマスにのみ動かすことができます。

ナイトの駒をマス (X,Y)(X,Y) まで移動させる方法は何通りありますか?

109+710^9+7 で割った余りを求めてください。

制約

  • 1≤X≤1061 \leq X \leq 10^6
  • 1≤Y≤1061 \leq Y \leq 10^6
  • 入力中のすべての値は整数である。

入力

入力は以下の形式で標準入力から与えられる。

XX YY

出力

ナイトの駒を (0,0)(0,0) から (X,Y)(X,Y) まで移動させる方法の数を、109+710^9+7 で割った余りを出力せよ。

3 3
2

(0,0)→(1,2)→(3,3)(0,0) \to (1,2) \to (3,3) と (0,0)→(2,1)→(3,3)(0,0) \to (2,1) \to (3,3) の 22 通りが考えられます。

2 2
0

(2,2)(2,2) にナイトの駒を移動させることはできません。

999999 999999
151840682

方法の数を 109+710^9+7 で割った余りを出力してください。