Problem:
Score : 600 points

Problem Statement

Consider the following arithmetic progression with n terms:

x, x + d, x + 2d, \ldots, x + (n-1)d

What is the product of all terms in this sequence?
Compute the answer modulo 1\ 000\ 003.

You are given Q queries of this form.
In the i-th query, compute the answer in case x = x_i, d = d_i, n = n_i.

Constraints

1 \leq Q \leq 10^5

0 \leq x_i, d_i \leq 1\ 000\ 002

1 \leq n_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

Q
x_1 d_1 n_1
:
x_Q d_Q n_Q

Output

Print Q lines.

In the i-th line, print the answer for the i-th query.

Sample Input 1

2
7 2 4
12345 67890 2019

Sample Output 1

9009
916936

For the first query, the answer is 7 \times 9 \times 11 \times 13 = 9009.
Don't forget to compute the answer modulo 1\ 000\ 003.

Solution in C (GCC 5.4.1) (judge verdict: Time Limit Exceeded)

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
#include <stdlib.h>

typedef unsigned long long int u64t;

int main()
{
  int cnt;
  u64t i,j;
  u64t n,x,d,Q;
  u64t y;
  u64t result;
  u64t key=1000003;

  cnt = scanf("%ld", &Q);
  for (i=0; i<Q; i++) {
    cnt = scanf("%ld %ld %ld", &x, &d, &n);
    result=1;
    for(j=0; j<n; j++){
      y = (x + (j*d));
//      printf("y=%ld result=%ld\n", y, result);
      if ((y%key) != 0) {
        y = y%key;
      }
      result *= y;
      if ((result%key) > 0) {
        result = (result%key);
      }
    }
    printf("%ld\n", (result%key));
  }
  
  return 0;
}