分块高手彻底怒了
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定三个长度为 n 的数组 a, b, c,请计算以下三重求和表达式的值:

\sum_{i=1}^{n} \sum_{j=i}^{n} \sum_{k=j}^{n} \left( \frac{a_i}{b_j} \times \left\lfloor \frac{n}{i} \right\rfloor \times \left\lfloor \frac{n}{j} \right\rfloor \times \left\lfloor \frac{n}{k} \right\rfloor + c_k \right)

其中 \lfloor x \rfloor 表示对 x 向下取整,除法 \frac{a_i}{b_j} 表示分数运算(需结合模运算规则处理)。

请将计算结果对 10^9 + 7 取模后输出。

输入描述:

第一行包含一个整数 n (1\leq n\leq 10^5)
第二行包含 n 个整数 a_1, a_2, \dots, a_n (1\leq a_i\leq 10^9)
第三行包含 n 个整数 b_1, b_2, \dots, b_n (1\leq b_i\leq 10^9)
第四行包含 n 个整数 c_1, c_2, \dots, c_n (1\leq c_i\leq 10^9)

输出描述:

一行,输出表达式的结果对 10^9 + 7 取模的值。
示例1

输入

复制
3
1 2 3
1 1 1
1 1 4

输出

复制
91

备注:

模运算规则:对于除法 \frac{a_i}{b_j},需计算 a_i \times b_j^{-1} \mod (10^9 + 7),其中 b_j^{-1}b_j 在模 10^9 + 7 下的乘法逆元。