#include <bits/stdc++.h>
using namespace std;
int tx[200001], ty[200001];
int px, py;
int N;
bool checkInside(long long x1, long long y1, long long x2, long long y2,
                 long long x3, long long y3) {
  long long a = (x2 - x1) * (py - y1) - (y2 - y1) * (px - x1);
  long long b = (x3 - x2) * (py - y2) - (y3 - y2) * (px - x2);
  long long c = (x1 - x3) * (py - y3) - (y1 - y3) * (px - x3);
  if (a < 0 && b < 0 && c < 0) return true;
  if (a > 0 && b > 0 && c > 0) return true;
  return false;
}
bool checkInside() {
  for (int i = 1; i < N - 1; i++) {
    if (checkInside(tx[0], ty[0], tx[i], ty[i], tx[i + 1], ty[i + 1]))
      return true;
  }
  return false;
}
long long solve() {
  if (!checkInside()) return 0;
  int* x = tx;
  int* y = ty;
  long long ans = (long long)N * (N - 1) * (N - 2) / 6;
  long long cur = 0;
  for (int s = 0; s < N; s++) {
    int l = 0;
    int r = N - 1;
    while (l < r) {
      int m = (l + r + 1) / 2;
      if (((long long)x[m] - x[0]) * (py - y[0]) -
              ((long long)y[m] - y[0]) * (px - x[0]) <
          0) {
        l = m;
      } else {
        r = m - 1;
      }
    }
    cur += (long long)l * (l - 1) / 2;
    x[N] = x[0];
    y[N] = y[0];
    x++, y++;
  }
  ans -= cur;
  return ans;
}
int main(int argc, char* argv[]) {
  scanf("%d", &N);
  for (int i = 0; i < (N); ++i) scanf("%d %d", tx + i, ty + i);
  int T;
  scanf("%d", &T);
  while (T--) {
    scanf("%d %d", &px, &py);
    long long res = solve();
    cout << res << endl;
  }
  return 0;
}
