#include <bits/stdc++.h>
using namespace std;
struct pt {
  long long x, y;
} p[100010];
int sig(long long i) {
  if (i < 0)
    return -1;
  else
    return 1;
}
long long area(int i, int j, int k) {
  long long ret;
  ret = ((p[k].x - p[i].x) * (p[j].y - p[i].y) -
         (p[j].x - p[i].x) * (p[k].y - p[i].y));
  return ret;
}
set<int> s;
int main() {
  int T, len, j, i, ret, n, si;
  long long l, r, L, R;
  while (scanf("%d", &n) == 1) {
    for (i = 0; i < n; i++) {
      scanf("%I64d %I64d", &p[i].x, &p[i].y);
    }
    scanf("%d", &T);
    while (T--) {
      scanf("%I64d %I64d", &p[n].x, &p[n].y);
      s.clear();
      for (i = 0; i < n; i++) {
        s.insert(sig(area(i, n, (i + 1) % n)));
      }
      if (s.size() == 2) {
        printf("0\n");
        continue;
      }
      j = 1;
      long long ans = 0;
      for (i = 0; i < n; i++) {
        if (i == j) {
          j = (j + 1) % n;
        }
        si = sig(area(i, n, j));
        while (sig(area(i, n, (j + 1) % n)) == si) {
          j = (j + 1) % n;
        }
        long long A = (j - i + n) % n;
        ans += (A * (A - 1)) / 2;
      }
      long long ban = n;
      ban *= (n - 1);
      ban *= (n - 2);
      ban /= 6;
      ans = ban - ans;
      printf("%I64d\n", ans);
    }
  }
  return 0;
}
