#include <bits/stdc++.h>
using namespace std;
int n, t;
struct punct {
  int x, y;
} A[100010], B[30];
long long sol, value;
long long det(punct A, punct B, punct C) {
  return 1LL * A.x * B.y + 1LL * B.x * C.y + 1LL * C.x * A.y - 1LL * A.x * C.y -
         1LL * B.x * A.y - 1LL * C.x * B.y;
}
long long modul(long long x) {
  if (x >= 0) return x;
  return -x;
}
inline int next(int x) {
  if (x < n) return x + 1;
  return 1;
}
long long number(int x) { return 1LL * x * (x - 1) / 2; }
void solve(punct P) {
  long long s1 = 0, s2 = 0;
  for (int i = 2; i < n; i++) s1 = s1 + modul(det(A[1], A[i], A[i + 1]));
  for (int i = 1; i <= n; i++) s2 = s2 + modul(det(A[i], A[next(i)], P));
  if (s1 != s2)
    value = sol * 2;
  else {
    int ind = 0;
    for (int i = 1; i <= n; i++) {
      if (i == 1) {
        for (int j = i + 1; j <= n; j++)
          if (det(A[1], P, A[j]) > 0) ind = j;
      } else {
        while (det(A[i], P, A[next(ind)]) > 0) ind = next(ind);
      }
      if (ind > i) {
        value += number(ind - i);
        value += number(n - (ind + 1) + i);
      }
      if (ind < i) {
        value += number(ind + n - i);
        value += number(i - (ind + 1));
      }
    }
  }
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> A[i].x >> A[i].y;
  sol = 1LL * n * (n - 1) * (n - 2) / 6;
  cin >> t;
  for (int i = 1; i <= t; i++) {
    cin >> B[i].x >> B[i].y;
    value = 0;
    solve(B[i]);
    cout << sol - value / 2 << "\n";
  }
  return 0;
}
