#include <bits/stdc++.h>
using namespace std;
struct point {
  int x, y;
} a[110000], no;
long long C[110000], S;
long long multi(point p1, point p2, point p0) {
  int x1, y1, x2, y2;
  x1 = p1.x - p0.x;
  y1 = p1.y - p0.y;
  x2 = p2.x - p0.x;
  y2 = p2.y - p0.y;
  return (long long)x1 * y2 - (long long)x2 * y1;
}
bool init(int n) {
  int i;
  long long s = 0;
  for (i = 1; i < n; i++) {
    s += abs(multi(a[i], a[i + 1], no));
    if (s > S) return false;
  }
  s += abs(multi(a[1], a[n], no));
  if (S == s) return true;
  return false;
}
int main() {
  int n, m, i, j;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%d%d", &a[i].x, &a[i].y);
  scanf("%d", &m);
  long long zs, ans;
  zs = (long long)n * (n - 1) * (n - 2) / 6;
  for (i = 2; i < n; i++) S += abs(multi(a[i], a[i + 1], a[1]));
  while (m--) {
    scanf("%d%d", &no.x, &no.y);
    if (!init(n)) {
      printf("0\n");
      continue;
    }
    j = 1;
    ans = zs;
    for (i = 1; i <= n; i++)
      for (; j < n + i; j++) {
        int tt = j % n;
        if (tt == 0) tt = n;
        if (multi(no, a[tt], a[i]) < 0) {
          j--;
          ans -= (long long)(j - i) * (j - i - 1) / 2;
          j++;
          break;
        }
      }
    cout << ans << endl;
  }
  return 0;
}
