#abc154f. [abc154_f]Many Many Paths

[abc154_f]Many Many Paths

题目描述

小 Snuke 站在一个二维平面上。在一次操作中,他可以沿正 xx 轴向正方向移动 11,或者沿正 yy 轴向正方向移动 11

让我们定义一个函数 f(r,c)f(r, c) 如下:

  • f(r,c):=f(r,c) :=(小 Snuke 可以通过重复上述操作从点 (0,0)(0, 0) 到达点 (r,c)(r, c) 的路径数)

给定整数 r1r_1r2r_2c1c_1c2c_2。找到所有整数对 (i,j)(i, j),使得 r1ir2r_1 ≤ i ≤ r_2c1jc2c_1 ≤ j ≤ c_2,计算 f(i,j)f(i, j) 的总和,然后对 (109+7)(10^9+7) 求模。

约束条件

  • 1r1r21061 ≤ r_1 ≤ r_2 ≤ 10^6
  • 1c1c21061 ≤ c_1 ≤ c_2 ≤ 10^6
  • 输入中的所有值都是整数。

输入

输入数据格式如下:

r1r_1 c1c_1 r2r_2 c2c_2

输出

打印对 (109+7)(10^9+7) 求模后的 f(i,j)f(i, j) 总和。


示例输入 1

1 1 2 2

示例输出 1

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),所以 f(1,1)=2f(1,1)=2

类似地,f(1,2)=3f(1,2)=3f(2,1)=3f(2,1)=3f(2,2)=6f(2,2)=6。因此,总和为 1414


示例输入 2

314 159 2653 589

示例输出 2

602215194