Loading [MathJax]/jax/output/HTML-CSS/jax.js

Problem J: SolveMe

N 個の部屋があり, それぞれの部屋の床にはうさぎの絵が描かれている. あなたが部屋 r のうさぎの絵の右耳の部分に乗ると, あなたは部屋 A[r] に書かれたうさぎのしっぽの上にテレポートする. 同様に, 部屋 r のうさぎの絵の左耳の部分に乗ると, 部屋 B[r] に書かれたうさぎのしっぽの上にテレポートする.

整数 X, Y, Z が与えられる. ねこは, 以下の条件を満たすようにテレポートを設定しようとしている. テレポートの N2N 通りの設定方法のうち, 条件を満たすものは何通りか, mod 1,000,000,007で求めよ.

条件: 任意の部屋 r に対し, r から右耳にちょうど X 回乗り, 左耳にちょうど 1 回乗り, 右耳にちょうど Y 回乗り, 左耳にちょうど 1 回乗り, 右耳にちょうど Z 回乗ると, r に戻る.

Constraints

Input

入力は以下の形式で与えられる:

N X Y Z

Output

テレポートの設定方法を 1,000,000,007 で割ったあまりを表す整数を 1 行に出力せよ.

Sample Input 1

3 1 0 1

Sample Output 1

18

Sample Input 2

5 8 5 8

Sample Output 2

120