#pragma GCC optimize("Ofast") #include using namespace std; typedef long long int ll; typedef unsigned long long int ull; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); ll myRand(ll B) { return (ull)rng() % B; } inline double time() { return static_cast(chrono::duration_cast(chrono::steady_clock::now().time_since_epoch()).count()) * 1e-9; } ll mod_pow(ll a,ll b,ll mod){ a%=mod; if(b==0)return 1; if(b==1)return a; ll res=mod_pow(a,b/2,mod)%mod; res*=res; res%=mod; if(b%2)res*=a; return res%mod; } int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n,m,p,q; cin >> n >> m >> p >> q; while (q--) { ll x,f; cin >> x >> f; x %= p; if (x == 0) { if (f == 0) { cout << m << "\n"; } else { cout << 0 << "\n"; } } else if (f == 0) { cout << m/p << "\n"; } else { ll u = f*mod_pow(x,p-2,p)%p; cout << m/p+(m%p >= u) << "\n"; } } }