import sys input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### def naive(a, b, K): ans = 0 for k in range(K + 1): for i in range(1 << k): z = 0 for j in range(k): if i >> j & 1: z += a else: z *= b # print(k, bin(i), z) ans = max(ans, z) return ans def test(a, b, k): if a == 0: return 0 elif b == 0: return max(0, a * k) elif b == 1: return max(0, a * k) elif b > 1: if a <= 0: return 0 else: return a * b ** (k - 1) elif b == -1: if a > 0: return a * k else: return -a * (k - 1) else: if a > 0: if k % 2 == 1: return a * b ** (k-1) else: return 2 * a * b ** (k-2) else: if k % 2 == 0: return a * b ** (k-1) elif k == 1: return 0 else: return 2 * a * b ** (k-2) mod = 998244353 def solve(a, b, k): if a == 0: return 0 elif b == 0 or b == 1: if a > 0: return a * k % mod else: return 0 elif b > 1: if a < 0: return 0 else: return a * pow(b, k-1, mod) % mod elif b == -1: if a > 0: return a * k % mod else: return (-a * (k - 1) )% mod else: if a > 0: if k % 2 == 1: return a * pow(b, k-1, mod) % mod else: return 2 * a * pow(b, k-2, mod) % mod else: if k % 2 == 0: return a * pow(b, k-1, mod) % mod elif k == 1: return 0 else: return 2 * a * pow(b, k-2, mod) % mod # from random import randint # for _ in range(100000): # k = randint(1, 3) # a = randint(-5, 5) # b = randint(-5, 5) # r1 = naive(a, b, k) # r2 = test(a, b, k) # if r1 != r2: # print(a, b, k) # print(r1, r2) # break for _ in range(ni()): a, b, k = na() print(solve(a, b, k))