Mirko has written the following function:
Copy
int fun() {
int ret = 0;
for (int a = X1; a <= Y1; ++a)
for (int b = X2; b <= Y2; ++b)
...
for (int <N-th> = XN; <N-th> <= YN; ++<N-th>)
ret = (ret + 1) % 1000000007;
return ret;
}
Copy
function fun: longint;
var
ret: longint;
a, b, ... , y, z: longint;
begin
ret := 0;
for a := X1 to Y1 do
for b := X2 to Y2 do
...
for <N-th> := XN to YN do
ret := (ret + 1) mod 1000000007;
fun := ret;
end;
<N-th>
denotes the
Compute the return value of the function.
Input Specification
The first line of input contains the positive integer
For the next
Output Specification
The first and only line of output must contain the return value of the function.
Sample Input 1
Copy
2
1 2
a 3
Sample Output 1
Copy
5
Sample Input 2
Copy
3
2 3
1 2
1 a
Sample Output 2
Copy
10
Sample Input 3
Copy
3
1 2
a 3
1 b
Sample Output 3
Copy
11
Comments