import sys, math sys.setrecursionlimit(10**8) sys.set_int_max_str_digits(0) INF = 1e18 MOD = 998244353 from bisect import bisect_left, bisect_right from collections import deque, defaultdict, Counter from itertools import product, combinations, permutations, groupby, accumulate from heapq import heapify, heappop, heappush input = sys.stdin.readline def I(): return input().rstrip() def II(): return int(input().rstrip()) def IS(): return input().rstrip().split() def MII(): return map(int, input().rstrip().split()) def LI(): return list(input().rstrip()) def TII(): return tuple(map(int, input().rstrip().split())) def LII(): return list(map(int, input().rstrip().split())) def LSI(): return list(map(str, input().rstrip().split())) def GMI(): return list(map(lambda x: int(x) - 1, input().rstrip().split())) def kiriage(a, b): return (a+b-1)//b T = II() for i in range(T): A, B, K = MII() if A > 0: if -1 <= B <= 1: ans = A*K ans %= MOD elif B >= 2: ans = A * pow(B, (K - 1)%(MOD - 1), MOD) ans %= MOD else: # + で終わるように調整 nokori = K - 1 if nokori%2 != 0: nokori -= 1 ans = A * pow(abs(B), nokori%(MOD - 1), MOD) ans %= MOD elif A == 0: ans = 0 else: # A < 0 if B >= 0: # 好転しない ans = 0 elif B == -1: ans = A*(K - 1) * (-1) else: ans1 = A*(K - 1) * B nokori = K - 1 if nokori%2 != 1: nokori -= 1 #ans2 = A * B**(nokori) ans2 = A # ans1 を超えるのに何回かかるか確認する cnt = 0 while ans2 < ans1: ans2 *= abs(B) cnt += 1 if cnt < nokori: # ans2 が ans1 を超える ans = A* pow(abs(B), nokori%(MOD - 1), MOD) ans %= MOD else: ans = ans1%MOD print(ans)