#include #include #include #include using namespace std; typedef long long LL; typedef pair PLL; const int N = 100010; struct Point { int x, y; }; int n, a, b, c, d; LL mod; Point p[N]; set s; int GCD(int x, int y) { return y ? GCD(y, x % y) : x; } int main() { scanf("%d%d%d%d%d", &a, &b, &c, &d, &n); for (int i = 1; i <= n; ++i) scanf("%d%d", &p[i].x, &p[i].y); mod = abs(1LL * a * d - 1LL * b * c); if (mod == 0LL) { int gx = GCD(a, c), gy = GCD(b, d); for (int i = 1; i <= n; ++i) { if (gx == 0) { s.insert({ p[i].x, p[i].y % gy }); } else if (gy == 0) { s.insert({ p[i].x % gx, p[i].y }); } else { int k = min(p[i].x / gx, p[i].y / gy); s.insert({ p[i].x - k * gx , p[i].y - k * gy }); } } } else { for (int i = 1; i <= n; ++i) { PLL v; v.first = (1LL * d * p[i].x - 1LL * c * p[i].y) % mod; (v.first += mod) %= mod; v.second = (1LL * b * p[i].x - 1LL * a * p[i].y) % mod; (v.second += mod) %= mod; s.insert(v); } } printf("%d\n", (int) s.size()); return 0; }