101545: [AtCoder]ABC154 F - Many Many Paths

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Score : $600$ points

Problem Statement

Snuke is standing on a two-dimensional plane. In one operation, he can move by $1$ in the positive $x$-direction, or move by $1$ in the positive $y$-direction.

Let us define a function $f(r, c)$ as follows:

  • $f(r,c) := $ (The number of paths from the point $(0, 0)$ to the point $(r, c)$ that Snuke can trace by repeating the operation above)

Given are integers $r_1$, $r_2$, $c_1$, and $c_2$. Find the sum of $f(i, j)$ over all pair of integers $(i, j)$ such that $r_1 ≤ i ≤ r_2$ and $c_1 ≤ j ≤ c_2$, and compute this value modulo $(10^9+7)$.

Constraints

  • $1 ≤ r_1 ≤ r_2 ≤ 10^6$
  • $1 ≤ c_1 ≤ c_2 ≤ 10^6$
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

$r_1$ $c_1$ $r_2$ $c_2$

Output

Print the sum of $f(i, j)$ modulo $(10^9+7)$.


Sample Input 1

1 1 2 2

Sample Output 1

14

For example, there are two paths from the point $(0, 0)$ to the point $(1, 1)$: $(0,0)$ → $(0,1)$ → $(1,1)$ and $(0,0)$ → $(1,0)$ → $(1,1)$, so $f(1,1)=2$.

Similarly, $f(1,2)=3$, $f(2,1)=3$, and $f(2,2)=6$. Thus, the sum is $14$.


Sample Input 2

314 159 2653 589

Sample Output 2

602215194

Input

题意翻译

斯努克站在一个二维平面上。 在一次操作中,他可以向 $x$ 轴正方向或是 $y$ 轴正方向移动一步。 定义函数 $f(r,c)$ 为通过上述操作,斯努克从 $(0,0)$ 走到 $(r,c)$ 的方案总数。 现在给定 $r_1,r_2,c_1$ 和 $c_2$ ,请你求出所有 $f(i,j)$ 之和,其中 $r_1 \le i \le r_2$ 且 $c_1 \le j \le c_2$ 。形式化的,请你求出 $\ \ \ \ \ \ \sum\limits_{i=r_1}^{r_2} \sum\limits_{j=c_1}^{c_2}f(i,j)$ 的值。 由于结果可能很大,请将结果对 $10^9+7$ 取模。

加入题单

算法标签: