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 procedure (he is such a good coder he coded it in both C++ and Pascal):
void something( int jump ) { int i = 0; while( i < N ) { seq[i] = seq[i] + 1; i = i + jump; } } procedure something( jump: longint ); var i : longint; begin i := 0; while i < N do begin seq[i] := seq[i] + 1; i := i + jump; end; end;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 this parts is defined by two numbers, L and R (L ≤ R) 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.
입력 10 4 1 1 2 1 3 0 9 2 6 7 7 출력 35 18 3 입력 11 3 3 7 10 3 0 10 2 6 7 7 출력 8 2 1 입력 1000000 6 12 3 21 436 2 19 2 12 16124 692 29021 출력 16422 28874Sample 1. description: The procedure is called with arguments 1, 1, 2, 1. After that the array contains values {4, 3, 4, 3, 4, 3, 4, 3, 4, 3}. Sum of indices 2 to 6 (inclusive) is 4+3+4+3+4 = 18.
Sample 2. description: The array is {3, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1}
출처:coci 2009-2010 contest5