#include <bits/stdc++.h>
using namespace std;
typedef struct {
  long long int x, y;
} point;
long long int n;
point ar[200000];
point getvec(point a, point b) {
  point c;
  c.x = b.x - a.x;
  c.y = b.y - a.y;
  return c;
}
long long int cross(point v1, point v2) { return (v1.x * v2.y - v1.y * v2.x); }
bool isinside(point p) {
  point v1, v2;
  for (int i = 0; i < n; i++) {
    v1 = getvec(p, ar[i]);
    v2 = getvec(p, ar[(i + 1) % n]);
    if (cross(v1, v2) >= 0) return false;
  }
  return true;
}
int main() {
  int t;
  point p;
  cin >> n;
  for (int i = 0; i < n; i++) cin >> ar[i].x >> ar[i].y;
  cin >> t;
  while (t--) {
    cin >> p.x >> p.y;
    if (!isinside(p)) {
      cout << "0\n";
      continue;
    }
    long long int s = 0;
    long long int crs;
    int a = 0, b = 0;
    point ab, bp;
    for (a = 0; a < n; a++) {
      crs = -1;
      while (crs <= 0) {
        b = (b + 1) % n;
        ab = getvec(ar[a], ar[b]);
        bp = getvec(ar[b], p);
        crs = cross(ab, bp);
      }
      b = (b - 1 + n) % n;
      long long int diff = (b - a + n) % n;
      s += (diff * (diff - 1)) / 2;
    }
    s = (n * (n - 1) * (n - 2)) / 6 - s;
    cout << s << endl;
  }
  return 0;
}
