Type: Default 1000ms 256MiB

这就是前缀和

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

现有一个整数nn,和一个初始点值均为 00 的无限长的数轴。

给定一个序列 p1,p2,p3,,pn{p_1},{p_2},{p_3},……,{p_n} ,表示有nn个数轴上的点。

再给出一个序列用于修改nn个点的值, ap1,ap2,ap3,,apn{a_{p_1}},{a_{p_2}},{a_{p_3}},……,{a_{p_n}} ,分别表示数轴上 pi{p_i} 点的值。

  • 定义 S(x)=i=xaiS(x)=\sum_{i=-\infty}^{x} {a_i}

随后给出 qq 个查询,每个查询:

  • 给出两个整数 l,rl,r ,求S(r)S(l)S(r)-S(l)的答案。

输入格式

输入一个整数T(1T105)T(1 \leq T \leq 10^5),表示测试样例组数。

对于每组测试样例:

第一行一个整数n(1n2×105)n(1 \leq n \leq 2\times 10^5 ),表示序列长度。

第二行nn个整数,p1,p2,p3,,pn{p_1},{p_2},{p_3},……,{p_n},表示有nn个数轴上的点,(pi109)( |{p_i}| \leq 10^9 )且各不相同。

第三行nn个整数,ap1,ap2,ap3,,apn{a_{p_1}},{a_{p_2}},{a_{p_3}},……,{a_{p_n}},分别表示数轴上 pi{p_i} 点的值,(api109)( |{a_{p_i}}| \leq 10^9 )

第四行一个整数q(1q2×105)q(1 \leq q \leq 2\times 10^5 ), 表示查询次数。

随后qq行,每行输入两个整数l,rl,r109l,r(|l|,|r| \leq 10^9)

多组数据范围保证,n,q2×105\sum n,\sum q \leq 2\times 10^5

输出格式

每组测试样例输出qq行。

每行输出一个对 109+710^9+7 取模的整数ansans,代表查询答案。

输入输出样例 #1

输入 #1

1
4
-10 0 10 20
-5 15 -3 10
4
-20 -10
-5 15
20 -20
-100 -50

输出 #1

1000000002
12
999999990
0