fact = [0,1] for b in range(2, 37): ps = [] for p in range(2, 32): cnt = 0 while b % p == 0: cnt += 1 b //= p if cnt: ps.append((p, cnt)) fact.append(ps) for _ in range(int(input())): seed, n, k, b = map(int, input().split()) x = [seed] now = seed for i in range(n): now = 1 + (now * (now + 12345)) % 100000009 x.append(now) ans = 10 ** 9 for p, cntb in fact[b]: cntx = [] for xi in x: cnt = 0 while xi % p == 0: cnt += 1 xi //= p cntx.append(cnt) cntx.sort() ans = min(ans, sum(cntx[:k]) // cntb) print(ans)