#include <bits/stdc++.h>   using namespace std;   const double pi = acos(-1.0), eps = 1e-8;   const int inf = ~0U >> 2;   int mod = 1e9 + 7;   int Pow(int x, long long t) {     int r = 1;     for (; t; t >>= 1, x = (long long)x * x % mod)       if (t & 1) r = (long long)r * x % mod;     return r;   }   const int N = 101010;   int n, K;   struct P {     long long x, y;     void in() { cin >> x >> y; }     P(long long _x = 0, long long _y = 0) { x = _x, y = _y; }     double dis() { return sqrt(x * x + y * y); }     long long operator^(const P& b) { return x * b.y - y * b.x; }     P operator-(const P& b) { return P(x - b.x, y - b.y); }   } p[N << 1], q;   long long mul(P& o, P& a, P& b) { return (a - o) ^ (b - o); }   bool in(P q) {     double a = 0;     for (int i = 0; i < n; ++i) {       long long aera = mul(q, p[i], p[i + 1]);       double disa = (p[i] - q).dis(), disb = (p[i + 1] - q).dis(),              disc = (p[i] - p[i + 1]).dis();       double angle = acos(((disa) * (disa) + (disb) * (disb) - (disc) * (disc)) /                           2.0 / disa / disb);       if (aera > 0)         a += angle;       else         a -= angle;     }     return fabs(a) >= 1;   }   long long wk() {     q.in();     if (!in(q)) return 0;     long long ans = (long long)n * (n - 1) * (n - 2) / 6;     for (int i = 0, j = 1; i < n; ++i) {       while (mul(p[i], p[j], q) <= 0) ++j;       int del = (j + n - i) % n;       int rm = n - del;       ans -= (long long)rm * (rm - 1) / 2;     }     return ans;   }   int main() {     cin >> n;     for (int i = 0; i < n; ++i) p[i].in(), p[i + n] = p[i];     cin >> K;     for (int i = 0; i < K; ++i) cout << wk() << endl;     return 0;   }   