#include <bits/stdc++.h>
using namespace std;
struct pct {
  long long x, y;
  friend long long cross(pct a, pct b) { return a.x * b.y - a.y * b.x; }
  friend pct operator-(pct a, pct b) { return {a.x - b.x, a.y - b.y}; }
};
long long n;
long long t;
vector<pct> ply;
int32_t main() {
  cin >> n;
  ply.resize(2 * n + 1);
  for (long long i = 0; i < n; ++i) {
    cin >> ply[i].x >> ply[i].y;
    ply[i + n] = ply[i];
  }
  cin >> t;
  while (t--) {
    pct O;
    bool ok = 0;
    cin >> O.x >> O.y;
    for (long long i = 0; i < n; ++i) {
      if (cross(ply[i] - O, ply[i + 1] - O) > 0) {
        cout << 0 << "\n";
        ok = 1;
        break;
      }
    }
    if (ok) continue;
    long long p1 = 0, p2 = 2;
    long long sol = 0;
    long long v[200002] = {0};
    while (p1 < n && p2 < n + n) {
      if ((p2 + 1) % n == p1) p1++;
      while (p1 + 1 < p2 && cross(ply[p2] - ply[p1], O - ply[p1]) > 0) {
        p1++;
      }
      if (p1 > n) break;
      sol += (p2 - p1) * (p2 - p1 - 1) / 2 - v[p2 % n];
      v[p2] = (p2 - p1) * (p2 - p1 - 1) / 2;
      p2++;
    }
    cout << n * (n - 1) * (n - 2) / 6 - sol << "\n";
  }
  return 0;
}
