#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
int dcmp(double x) {
  if (fabs(x) < eps) return 0;
  if (x < 0) return -1;
  return 1;
}
struct Point {
  double x, y;
  Point() {}
  Point(double _x, double _y) {
    x = _x;
    y = _y;
  }
  Point operator-(const Point &b) const { return Point(x - b.x, y - b.y); }
  double operator*(const Point &b) const { return x * b.y - y * b.x; }
  double operator&(const Point &b) const { return x * b.x + y * b.y; }
} point[100010], t, tempa, tempb;
long long sum[100010], num[100010];
int main() {
  int n, i, a, b, now, q, flag, fuck;
  scanf("%d", &n);
  for (i = 1; i <= n; i++)
    scanf("%lf%lf", &point[n - i + 1].x, &point[n - i + 1].y);
  scanf("%d", &q);
  while (q--) {
    scanf("%lf%lf", &t.x, &t.y);
    flag = 0;
    for (i = 1; i <= n; i++) {
      a = i;
      b = i + 1;
      if (b > n) b = 1;
      tempa = point[a] - t;
      tempb = point[b] - t;
      if (dcmp(tempa * tempb) < 0) {
        flag = 1;
        break;
      }
    }
    if (flag == 1) {
      printf("0\n");
      continue;
    }
    int now = 1;
    sum[0] = 0LL;
    for (i = 1; i <= n; i++) {
      tempa = point[i] - t;
      while (1) {
        now = now + 1;
        if (now > n) now -= n;
        tempb = point[now] - t;
        if (dcmp(tempa * tempb) > 0) continue;
        now--;
        if (now == 0) now = n;
        if (now > i)
          num[i] = now - i;
        else
          num[i] = now + n - i;
        sum[i] = sum[i - 1] + num[i];
        break;
      }
    }
    long long ans = 0LL, temp;
    for (i = 1; i <= n; i++) {
      fuck = i + num[i];
      temp = num[i] * (num[i] - 1) / 2;
      if (fuck > n)
        temp = sum[fuck - n] + sum[n] - sum[i] - temp;
      else
        temp = sum[fuck] - sum[i] - temp;
      ans = ans + temp;
    }
    printf("%I64d\n", ans / 3LL);
  }
  return 0;
}
