UPDATEIT - Update the array !


You have an array containing n elements initially all 0. You need to do a number of update operations on it. In each update you specify l, r and val which are the starting index, ending index and value to be added. After each update, you add the 'val' to all elements from index l to r. After 'u' updates are over, there will be q queries each containing an index for which you have to print the element at that index.

Input

First line consists of t, the number of test cases. (1 <= t <= 10)

Each test case consists of "n u", number of elements in the array and the number of update operations, in the first line (1 <= n <= 10000 and 1 <= u <= 100000)

Then follow u lines each of the format "l r val" (0 <= l, r < n, 0 <= val <=10000)

Next line contains q, the number of queries. (1 <= q <= 10000)

Next q lines contain an index (0 <= index < n)

Output

For each test case, output the answers to the corresponding queries in separate lines.

Example

Input:
1
5 3
0 1 7
2 4 6
1 3 2
3
0
3
4

Output:
7
8
6

hide comments
vl4deee11: 2024-06-14 05:16:18

The Fenwick tree can work here, but it is easier and simpler to prefix the sum on segments, for O(N) - go AC!

rapiram31: 2022-11-28 22:57:13

prefix sum?

iamrick: 2022-01-11 06:31:34

simple BIT

shofiqur_052: 2021-11-19 19:21:05

Range update, point query from BIT

nikhil0010: 2021-06-22 02:53:09

What a waste question ...

i_knowu: 2021-06-07 19:28:12

basic question on BIT

harry_shit: 2020-03-28 07:13:58

has anyone done it using bitmasks??

rohan101: 2019-12-31 19:52:39

i solved it in O(n) using difference array still getting tle is java

scolar_fuad: 2019-11-20 20:51:00

I always sement tree because i only know segment tree !

harsh3005: 2019-11-10 14:42:29

use printf scanf as cin cout slows you down!::-)


Added by:Pandian
Date:2013-10-15
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64
Resource:Own