## https://yukicoder.me/problems/no/3462 from collections import deque MOD = 998244353 def solve(A, B, K): if A > 0: if B > 1: answer = A answer *= pow(B, K - 1, MOD) answer %= MOD elif -1 <= B <= 1: answer = (K * A) % MOD else: if K % 2 == 1: answer = A answer *= pow(B, K - 1, MOD) answer %= MOD else: answer = (2 * A) % MOD answer *= pow(B, K - 2, MOD) answer %= MOD elif A == 0: answer = 0 else: if B >= 0: answer = 0 elif B == -1: answer = abs(A) * (K - 1) answer %= MOD else: if K % 2 == 0: answer = A answer *= pow(B, K - 1, MOD) answer %= MOD elif K % 2 == 1: if K == 1: answer = 0 else: answer = (2 * A) % MOD answer *= pow(B, K - 2, MOD) answer %= MOD return answer def solve2(A, B, K): answer = 0 for k in range(1, K + 1): for bit in range(2 ** k): x = 0 for i in range(k): if bit & (1 << i) > 0: x *= B else: x += A answer = max(answer, x) print("judge = ", answer % MOD) def main(): T = int(input()) answers = [] for _ in range(T): A, B, K = map(int, input().split()) ans = solve(A, B, K) # solve2(A, B, K) answers.append(ans) for ans in answers: print(ans) if __name__ == "__main__": main()