max_d = 132 def solve(): a, b, c = map(int, input().split()) assert 1 <= a <= 10 ** 40 assert 1 <= b <= 10 ** 40 assert 2 <= c <= 10 ** 40 def check(p, q): return a ** p % c ** q == 0 if not check(max_d, 1): print(0) return def search(): f = 0, 1 t = 1, 0 while True: now = check(f[0], f[1]) k = 1 while check(f[0] + k * t[0], f[1] + k * t[1]) == now: k *= 2 if max(f[0] + k * t[0], f[1] + k * t[1]) > max_d: return t ok = 0 ng = k while ok + 1 < ng: mid = (ok + ng) // 2 if check(f[0] + mid * t[0], f[1] + mid * t[1]) == now: ok = mid else: ng = mid f = f[0] + ok * t[0], f[1] + ok * t[1] f, t = t, f p, q = search() # print(f"{p=}, {q=}") print(b * q // p % 998244353) t = int(input()) assert 1 <= t <= 100 for _ in range(t): solve()