#include <bits/stdc++.h>
using namespace std;
int n;
struct coo {
  int x, y;
} a[100005];
bool CCW(coo p1, coo p2, coo p3) {
  long long a1 = p2.x - p1.x;
  long long b1 = p2.y - p1.y;
  long long a2 = p3.x - p2.x;
  long long b2 = p3.y - p2.y;
  return a1 * b2 >= a2 * b1;
}
bool cmp0(coo p1, coo p2) { return CCW(a[1], p1, p2); }
long long getDist(coo A, coo B) {
  long long x = A.x - B.x;
  long long y = A.y - B.y;
  return x * x + y * y;
}
int nxt(int i) { return i % n + 1; }
int pre(int i) {
  i--;
  if (i == 0) i = n;
  return i;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  cin >> n;
  int tmpId = 1;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].x >> a[i].y;
    if ((a[i].x < a[tmpId].x) ||
        ((a[i].x == a[tmpId].x) && (a[i].y < a[tmpId].y)))
      tmpId = i;
  }
  swap(a[1], a[tmpId]);
  sort(a + 2, a + 1 + n, cmp0);
  long long rs1 = 1LL * n * (n - 1) * (n - 2) / 6;
  int Test;
  cin >> Test;
  while (Test--) {
    coo p;
    cin >> p.x >> p.y;
    long long rs2 = 0;
    int cur = 1;
    bool out = 0;
    for (int i = 1; i <= n; i++) {
      while (!CCW(a[i], p, a[nxt(cur)])) cur = nxt(cur);
      if (cur == i) {
        out = 1;
      }
      long long sl = cur - i;
      if (cur < i) {
        sl += n;
      }
      sl = sl * (sl - 1) / 2;
      rs2 += sl;
    }
    if (out) rs2 = rs1;
    cout << rs1 - rs2 << '\n';
  }
  return 0;
}
