#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 85 - 69;
complex<long double> a[maxn];
long long int n, t;
long double cross(complex<long double> A, complex<long double> B) {
  return A.real() * B.imag() - A.imag() * B.real();
}
bool sign(long double val) { return val < 0; }
void solve(complex<long double> P) {
  for (int i = 0; i + 1 < n; i++) {
    if (sign(cross(a[i + 1] - a[i], P - a[i])) !=
        sign(cross(a[0] - a[n - 1], P - a[n - 1]))) {
      cout << 0 << '\n';
      return;
    }
  }
  long long int ans = 0;
  for (int i = 0; i < n; i++) {
    int lo = i + 1, hi = n + i - 1;
    while (hi - lo > 1) {
      int mid = (lo + hi) >> 1;
      if (cross(a[mid % n] - a[i], P - a[i]) < 0)
        lo = mid;
      else
        hi = mid;
    }
    long long int len = lo - i;
    ans += len * (len - 1) / 2;
  }
  cout << n * (n - 1) * (n - 2) / 6 - ans << '\n';
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    int fi, se;
    cin >> fi >> se;
    a[i] = complex<long double>(fi, se);
  }
  cin >> t;
  while (t--) {
    int fi, se;
    cin >> fi >> se;
    solve(complex<long double>(fi, se));
  }
  return 0;
}
