Hide

Problem T
Program

Mirko is trying to debug a piece of his code. First he creates an array of N integers and fills it with zeros. Then he repeatedly calls the following C++ procedure:

void something( int jump ) {
  int i = 0;
  while( i < N ) {
    seq[i] = seq[i] + 1;
    i = i + jump;
  }
}

As you can see, this procedure increases by one all elements in the array whose indices are divisible by jump.

Mirko calls the procedure exactly K times, using the sequence X1,X2,X3,,Xk as arguments.

After this, Mirko has a list of Q special parts of the array he needs to check to verify that his code is working as it should be. Each of these parts is defined by two numbers, L and R (LR) the left and right bound of the special part. To check the code, Mirko must compute the sum of all elements of seq between and including L and R. In other words seq[L]+seq[L+1]+seq[L+2]++seq[R]. Since he needs to know the answer in advance in order to check it, he asked you to help him.

Input

The first line of input contains two integers, N (1N106), the size of the array, and K (1K106), the number of calls to something that Mirko makes.

The second line contains K integers: X1,X2,X3,,Xk, the arguments passed to the procedure (1Xi<N).

The third line contains one integer Q (1Q106), the number of special parts of the array Mirko needs to check.

The next Q lines contain two integers each Li and Ri (0LiRi<N), the bounds of each special part.

Output

The output should contain exactly Q lines. The i-th line should contain the sum of elements seq[Li]+seq[Li+1]+seq[Li+2]++seq[Ri].

Sample Input 1 Sample Output 1
10 4
1 1 2 1
3
0 9
2 6
7 7
35
18
3
Sample Input 2 Sample Output 2
11 3
3 7 10
3
0 10
2 6
7 7
8
2
1
Sample Input 3 Sample Output 3
1000000 6
12 3 21 436 2 19
2
12 16124
692 29021
16422
28874
Hide

Please log in to submit a solution to this problem

Log in