# https://atcoder.jp/contests/m-solutions2019/submissions/5741430

import sys



input = sys.stdin.readline



MOD = 10 ** 6 + 3



fact = [1]

for n in range(1, MOD):

    fact.append((fact[-1] * n) % MOD)

    # d>1 の数列を d=1 となる数列に変換する

    # MODの倍数を含む数列の積は0になるので,

    # MODの倍数を含まない区間の積が計算できればよい

    # そのような区間の右端はMOD-1であり,fact[MOD-1]が計算できればよい



inv_fact = [-1] * MOD

inv_fact[MOD - 1] = pow(fact[-1], MOD - 2, MOD)

for n in range(MOD - 2, -1, -1):

    inv_fact[n] = ((inv_fact[n + 1] * (n + 1)) % MOD)

    # inv_factは,inv(n!)にn,n-1,...を掛けるイメージ



Q = int(eval(input()))

for _ in range(Q):

    x, d, n = list(map(int, input().split()))



    if x == 0:

        print((0))

        continue



    if d == 0:

        print((pow(x, n, MOD)))

        continue



    xd = (x * pow(d, MOD - 2, MOD)) % MOD

    if xd == 0:

        print((0))

        continue



    if MOD - xd < n:

        print((0))

        continue



    dn = pow(d, n, MOD)

    print(((((fact[xd + n - 1] * inv_fact[xd - 1]) % MOD) * dn) % MOD))

# https://atcoder.jp/contests/m-solutions2019/submissions/5741430

import sys



input = sys.stdin.readline



MOD = 10 ** 6 + 3



fact = [1]

for n in range(1, MOD):

    fact.append((fact[-1] * n) % MOD)

    # d>1 の数列を d=1 となる数列に変換する

    # MODの倍数を含む数列の積は0になるので,

    # MODの倍数を含まない区間の積が計算できればよい

    # そのような区間の右端はMOD-1であり,fact[MOD-1]が計算できればよい



inv_fact = [-1] * MOD

inv_fact[MOD - 1] = pow(fact[-1], MOD - 2, MOD)

for n in range(MOD - 2, -1, -1):

    inv_fact[n] = ((inv_fact[n + 1] * (n + 1)) % MOD)

    # inv_factは,inv(n!)にn,n-1,...を掛けるイメージ



Q = int(input())

ans = []

for _ in range(Q):

    x, d, n = map(int, input().split())



    if x == 0:

        ans.append(0)

        continue



    if d == 0:

        ans.append(pow(x, n, MOD))

        continue



    xd = (x * pow(d, MOD - 2, MOD)) % MOD

    if xd == 0:

        ans.append(0)

        continue



    if MOD - xd < n:

        ans.append(0)

        continue



    dn = pow(d, n, MOD)

    ans.append((((fact[xd + n - 1] * inv_fact[xd - 1]) % MOD) * dn) % MOD)

print(*ans, sep='\n')

# https://atcoder.jp/contests/m-solutions2019/submissions/5741430
import sys

input = sys.stdin.readline
MOD = 10**6 + 3
fact = [1]
for n in range(1, MOD):
    fact.append((fact[-1] * n) % MOD)
    # d>1 の数列を d=1 となる数列に変換する
    # MODの倍数を含む数列の積は0になるので,
    # MODの倍数を含まない区間の積が計算できればよい
    # そのような区間の右端はMOD-1であり,fact[MOD-1]が計算できればよい
inv_fact = [-1] * MOD
inv_fact[MOD - 1] = pow(fact[-1], MOD - 2, MOD)
for n in range(MOD - 2, -1, -1):
    inv_fact[n] = (inv_fact[n + 1] * (n + 1)) % MOD
    # inv_factは,inv(n!)にn,n-1,...を掛けるイメージ
Q = int(eval(input()))
for _ in range(Q):
    x, d, n = list(map(int, input().split()))
    if x == 0:
        print((0))
        continue
    if d == 0:
        print((pow(x, n, MOD)))
        continue
    xd = (x * pow(d, MOD - 2, MOD)) % MOD
    if xd == 0:
        print((0))
        continue
    if MOD - xd < n:
        print((0))
        continue
    dn = pow(d, n, MOD)
    print(((((fact[xd + n - 1] * inv_fact[xd - 1]) % MOD) * dn) % MOD))

# https://atcoder.jp/contests/m-solutions2019/submissions/5741430
import sys

input = sys.stdin.readline
MOD = 10**6 + 3
fact = [1]
for n in range(1, MOD):
    fact.append((fact[-1] * n) % MOD)
    # d>1 の数列を d=1 となる数列に変換する
    # MODの倍数を含む数列の積は0になるので,
    # MODの倍数を含まない区間の積が計算できればよい
    # そのような区間の右端はMOD-1であり,fact[MOD-1]が計算できればよい
inv_fact = [-1] * MOD
inv_fact[MOD - 1] = pow(fact[-1], MOD - 2, MOD)
for n in range(MOD - 2, -1, -1):
    inv_fact[n] = (inv_fact[n + 1] * (n + 1)) % MOD
    # inv_factは,inv(n!)にn,n-1,...を掛けるイメージ
Q = int(input())
ans = []
for _ in range(Q):
    x, d, n = map(int, input().split())
    if x == 0:
        ans.append(0)
        continue
    if d == 0:
        ans.append(pow(x, n, MOD))
        continue
    xd = (x * pow(d, MOD - 2, MOD)) % MOD
    if xd == 0:
        ans.append(0)
        continue
    if MOD - xd < n:
        ans.append(0)
        continue
    dn = pow(d, n, MOD)
    ans.append((((fact[xd + n - 1] * inv_fact[xd - 1]) % MOD) * dn) % MOD)
print(*ans, sep="\n")

-Q = int(eval(input())) +Q = int(input()) +ans = [] -    x, d, n = list(map(int, input().split())) +    x, d, n = map(int, input().split()) -        print((0)) +        ans.append(0) -        print((pow(x, n, MOD))) +        ans.append(pow(x, n, MOD)) -        print((0)) +        ans.append(0) -        print((0)) +        ans.append(0) -    print(((((fact[xd + n - 1] * inv_fact[xd - 1]) % MOD) * dn) % MOD)) +    ans.append((((fact[xd + n - 1] * inv_fact[xd - 1]) % MOD) * dn) % MOD) +print(*ans, sep="\n")