#P140. 模刀削面

模刀削面

题目背景

小依:你知道刀削面吗?

小铃:你不知道吗?!就是一只手拿着面团,另一只手里拿刀,站在开水锅前,把面团削成细长的薄片下进锅里煮的那种面!

小圈:你说得对,但是取模也是一种刀削面(?)

题目描述

给定长为 nn 的数列 aa。对于一个非负整数 xx,定义刀削面函数 $f(x) = x \bmod a _ 1 \bmod a _ 2 \bmod \cdots \bmod a _ n$(即先对 a1a _ 1 取模,再对 a2a _ 2 取模,一直取模到 ana _ n)。

给出非负整数 l,rl, r,求 i=lrf(i)\sum \limits _ {i = l} ^ r f(i) 的值对 109+710 ^ 9 + 7 取模的结果。

输入格式

第一行三个非负整数 n,l,rn, l, r

第二行 nn 个正整数表示 aa 数列。

输出格式

一行一个非负整数表示 i=lrf(i)\sum \limits _ {i = l} ^ r f(i) 的值对 109+710 ^ 9 + 7 取模的结果。

样例

样例输入 1

4 0 9
9 9 8 5 

样例输出 1

13

样例输入/输出 2

见下发文件 modulo2.in/ans。该样例满足测试点 353 \sim 5 的限制。

样例输入/输出 3

见下发文件 modulo3.in/ans。该样例满足测试点 8118 \sim 11 的限制。

数据范围与提示

本题共 2020 个测试点,每个测试点 55 分。

测试点编号 特殊性质
121 \sim 2 r<minair < \min a _ i
353 \sim 5 n1000n \le 1000r10000r \le 10000
676 \sim 7 n1000n \le 1000rl10000r - l \le 10000
8118 \sim 11 n1000n\le 1000
121412 \sim 14 n10000n\le 10000
151615 \sim 16 n70000n\le 70000
172017 \sim 20 无特殊限制

对于所有数据,1n2×1051 \le n \le 2\times 10 ^ 50lr10180 \le l \le r \le 10 ^ {18}1ai10181 \le a _ i \le 10 ^ {18}

后记

小依 & 小铃:所以取模和刀削面到底有什么关系啊!

小圈:你们不知道吗?!就是一只手拿着原数,另一只手里拿模数,站在开水锅(?)前,把原数削成细长的模数下进锅里煮(?)的那种运算!