#include <bits/stdc++.h>
using namespace std;
struct point {
  long long x, y;
  point operator-(point b) {
    point c;
    c.x = x - b.x;
    c.y = y - b.y;
    return c;
  }
  long long operator*(point b) { return x * b.y - y * b.x; }
};
const long long maxn = 100005;
long long n, t, p, q, ans, d, flag;
point a[maxn], b;
bool pc(long long xx) { return (xx > 0); }
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].x >> a[i].y;
  }
  cin >> t;
  for (long long h = 1; h <= t; h++) {
    flag = 0;
    cin >> b.x >> b.y;
    for (long long i = 1; i < n; i++) {
      if (pc((a[1] - a[n]) * (b - a[n])) !=
          pc((a[i + 1] - a[i]) * (b - a[i]))) {
        cout << 0 << endl;
        flag = 1;
        break;
      }
    }
    if (flag) {
      continue;
    }
    ans = 0;
    p = 2;
    d = 1;
    for (long long i = 1; i <= n; i++) {
      for (long long j = p, k = d; j <= n + 1; j++, k++) {
        if (j > n) {
          j = 1;
        }
        if ((a[j] - a[i]) * (b - a[i]) > 0) {
          ans += ((k - 2) * (k - 1) / 2);
          d = k - 1;
          p = j;
          break;
        }
      }
    }
    cout << n * (n - 1) * (n - 2) / 6 - ans << endl;
  }
  return 0;
}
