#P3178. [Coci2012]funkcija

[Coci2012]funkcija

[COCI2011-2012#2] FUNKCIJA

题目描述

Mirko 写了如下的函数:

(C++)

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;
}

(Pascal)

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;

表示第 NN 个小写字母。每个 XiX_iYiY_i 可能表示外层循环的变量名,也可能表示一个 105\le 10^5 的正整数。例如 X3X_3 可以是 aabb,也可以是一个整数常量。XiX_iYiY_i 中至少有一个会是整数常量。

计算这个函数的返回值。

输入格式

输入的第一行包含一个正整数 NN

接下来 NN 行的第 ii 行每行包含用空格分隔的 Xi,YiX_i,Y_i。如果 XiX_iYiY_i 都是整数常量,那么 XiYiX_i \le Y_i

输出格式

输出一行一个整数,表示函数的返回值。

样例 #1

样例输入 #1

2
1 2
a 3

样例输出 #1

5

样例 #2

样例输入 #2

3
2 3
1 2
1 a

样例输出 #2

10

样例 #3

样例输入 #3

3
1 2
a 3
1 b

样例输出 #3

11

提示

【数据范围】

对于 100%100\% 的数据,1N261 \le N \le 26