N,M,P,Q = map(int,input().split()) sin10 = P-2 print(sin10) sin2 = set([]) counter = 1 while sin10 > 0: if sin10 % 2 != 0: sin2.add(counter) sin10 //= 2 counter += 1 for i in range(Q): x,f = map(int,input().split()) counter += 1 if x % P == 0: print(M) else: #kurikaesinijyou xlis = [x] cc = 1 res =1 while cc <= counter+1: if cc in sin2: res *= xlis[-1] res %= P xlis.append((xlis[-1]**2)%P) cc += 1 y = f*res y %= P if y==0: y=P print(max(0,(M-y)//P + 1) )