atcoder#ABC154F. [ABC154F] Many Many Paths

[ABC154F] Many Many Paths

配点 : 600600

問題文

22 次元平面があります。この平面上に立っているすぬけ君は、一回の操作で xx 軸正の方向に 11 もしくは yy 軸正の方向に 11 移動することができます。

また、以下のように関数 f(r,c)f(r,c) を定義します。

  • f(r,c):=f(r,c) := (すぬけ君が点 (0,0)(0,0) から点 (r,c)(r,c) まで上記の操作を繰り返して到達する経路の個数)

整数 r1,r2,c1,c2r_1, r_2, c_1, c_2 が与えられます。 r1ir2r_1 \leq i \leq r_2 かつ c1jc2c_1 \leq j \leq c_2 を満たす全ての整数の組 (i,j)(i,j) に対する f(i,j)f(i,j) の 総和を求め、 (109+7)(10^9+7) で割った余りを計算してください。

制約

  • 1r1r21061 \leq r_1 \leq r_2 \leq 10^6
  • 1c1c21061 \leq c_1 \leq c_2 \leq 10^6
  • 入力はすべて整数

入力

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

r1r_1 c1c_1 r2r_2 c2c_2

出力

f(i,j)f(i,j) の総和を (109+7)(10^9+7) で割った余りを出力せよ。

1 1 2 2
14

例えば、点 (0,0)(0,0) から点 (1,1)(1,1) までの経路は、(0,0)(0,0)(0,1)(0,1)(1,1)(1,1)(0,0)(0,0)(1,0)(1,0)(1,1)(1,1)22 通りあるので、 f(1,1)=2f(1,1)=2 です。

同様に、f(1,2)=3f(1,2)=3, f(2,1)=3f(2,1)=3, f(2,2)=6f(2,2)=6 なので、求める総和は 1414 です。

314 159 2653 589
602215194