N, M, P, Q = gets.split.map(&:to_i) ans = 0 Q.times do x, f = gets.split.map(&:to_i) if x % P == 0 if f == 0 puts M else puts 0 end else t = f * x.pow(P - 2, P) % P if t == 0 if P > M puts 0 else ok = 1 ng = M + 1 while (ok - ng).abs >= 2 k = (ok + ng) / 2 if P * k <= M ok = k else ng = k end end puts ok end else if t > M puts 0 else ok = 1 ng = M + 2 while (ok - ng).abs >= 2 k = (ok + ng) / 2 if P * (k - 1) + t <= M ok = k else ng = k end end puts ok end end end end