import sys read=sys.stdin.buffer.read readline=sys.stdin.buffer.readline fac=[0,1] for b in range(2, 37): p=2 ps=[] bb=b while p*p<=bb: if bb%p==0: cnt=0 while bb%p==0: bb//=p cnt+=1 ps.append([p,cnt]) p+=1 if bb!=1: ps.append([bb,1]) fac.append(ps) MOD=10**8+9 for _ in range(int(readline())): seed,N,K,B=map(int,readline().split()) X=[seed] now=seed for i in range(1,N+1): now=1+(now*(now+12345))%MOD X.append(now) ans=MOD for p, cntb in fac[B]: arr=[] for xi in X: c=0 while xi%p==0: xi//=p c+=1 arr.append(c) arr.sort() ans=min(ans,sum(arr[:K])//cntb) print(ans)