#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;
}
