#include <stdio.h>
#include <algorithm>
#include <assert.h>
#include <set>
#include <map>
#include <complex>
#include <iostream>
#include <time.h>
#include <math.h>
#include <stack>
#include <stdlib.h>
#include <memory.h>
#include <bitset>
#include <math.h>
#include <string>
#include <string.h>
#include <queue>
#include <vector>
using namespace std;
const int MaxN = 3e3 + 10;
const int MaxC = 1e4 + 10;
const int INF = 1e9;
const int MOD = 1e9 + 7;
struct Point {
int x, y;
};
int cw(const Point &a, const Point &b, const Point &c) {
return (a.x - b.x) * (c.y - b.y) - (a.y - b.y) * (c.x - b.x);
}
bool inTriangle(const Point &a, const Point &b, const Point &c, const Point &d) {
int bcd = abs(cw(b, c, d));
int acd = abs(cw(a, c, d));
int abd = abs(cw(a, b, d));
int abc = abs(cw(a, b, c));
return abc == abd + acd + bcd;
}
Point white[MaxN], black[MaxN], zero;
int cnt[MaxN][MaxN], ord[MaxN], n, m, q, k;
int main() {
// freopen("input.txt", "r", stdin);
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m;
for (int i = 0; i < n; ++i) {
cin >> white[i].x >> white[i].y;
white[i].x += MaxC;
white[i].y += MaxC;
}
for (int i = 0; i < m; ++i) {
cin >> black[i].x >> black[i].y;
black[i].x += MaxC;
black[i].y += MaxC;
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (cw(white[i], zero, white[j]) > 0) {
for (int k = 0; k < m; ++k) {
if (inTriangle(white[i], zero, white[j], black[k]) == true) {
cnt[i][j]++;
}
}
cnt[j][i] = -cnt[i][j];
}
}
}
cin >> q;
for (int qi = 0; qi < q; ++qi) {
cin >> k;
for (int i = 0; i < k; ++i) {
cin >> ord[i];
ord[i]--;
}
int ans = 0;
for (int i = 0; i < k; ++i) {
int ni = i == k - 1 ? 0 : i + 1;
ans += cnt[ord[i]][ord[ni]];
}
cout << abs(ans) << '\n';
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxhc3NlcnQuaD4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGNvbXBsZXg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxtZW1vcnkuaD4KI2luY2x1ZGUgPGJpdHNldD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDx2ZWN0b3I+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjb25zdCBpbnQgTWF4TiA9IDNlMyArIDEwOwpjb25zdCBpbnQgTWF4QyA9IDFlNCArIDEwOwpjb25zdCBpbnQgSU5GID0gMWU5Owpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKIApzdHJ1Y3QgUG9pbnQgewogIGludCB4LCB5Owp9OwogCmludCBjdyhjb25zdCBQb2ludCAmYSwgY29uc3QgUG9pbnQgJmIsIGNvbnN0IFBvaW50ICZjKSB7CiAgcmV0dXJuIChhLnggLSBiLngpICogKGMueSAtIGIueSkgLSAoYS55IC0gYi55KSAqIChjLnggLSBiLngpOwp9CiAKYm9vbCBpblRyaWFuZ2xlKGNvbnN0IFBvaW50ICZhLCBjb25zdCBQb2ludCAmYiwgY29uc3QgUG9pbnQgJmMsIGNvbnN0IFBvaW50ICZkKSB7CiAgaW50IGJjZCA9IGFicyhjdyhiLCBjLCBkKSk7CiAgaW50IGFjZCA9IGFicyhjdyhhLCBjLCBkKSk7CiAgaW50IGFiZCA9IGFicyhjdyhhLCBiLCBkKSk7CiAgaW50IGFiYyA9IGFicyhjdyhhLCBiLCBjKSk7CiAgcmV0dXJuIGFiYyA9PSBhYmQgKyBhY2QgKyBiY2Q7Cn0KIApQb2ludCB3aGl0ZVtNYXhOXSwgYmxhY2tbTWF4Tl0sIHplcm87CmludCBjbnRbTWF4Tl1bTWF4Tl0sIG9yZFtNYXhOXSwgbiwgbSwgcSwgazsKIAppbnQgbWFpbigpIHsKLy8gIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICBjaW4udGllKE5VTEwpOwogIGNpbiA+PiBuID4+IG07CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgIGNpbiA+PiB3aGl0ZVtpXS54ID4+IHdoaXRlW2ldLnk7CiAgICB3aGl0ZVtpXS54ICs9IE1heEM7CiAgICB3aGl0ZVtpXS55ICs9IE1heEM7CiAgfQogIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgKytpKSB7CiAgICBjaW4gPj4gYmxhY2tbaV0ueCA+PiBibGFja1tpXS55OwogICAgYmxhY2tbaV0ueCArPSBNYXhDOwogICAgYmxhY2tbaV0ueSArPSBNYXhDOwogIH0KICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgZm9yIChpbnQgaiA9IDA7IGogPCBuOyArK2opIHsKICAgICAgaWYgKGN3KHdoaXRlW2ldLCB6ZXJvLCB3aGl0ZVtqXSkgPiAwKSB7CiAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBtOyArK2spIHsKICAgICAgICAgIGlmIChpblRyaWFuZ2xlKHdoaXRlW2ldLCB6ZXJvLCB3aGl0ZVtqXSwgYmxhY2tba10pID09IHRydWUpIHsKICAgICAgICAgICAgY250W2ldW2pdKys7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNudFtqXVtpXSA9IC1jbnRbaV1bal07CiAgICAgIH0KICAgIH0KICB9CiAgY2luID4+IHE7CiAgZm9yIChpbnQgcWkgPSAwOyBxaSA8IHE7ICsrcWkpIHsKICAgIGNpbiA+PiBrOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrOyArK2kpIHsKICAgICAgY2luID4+IG9yZFtpXTsKICAgICAgb3JkW2ldLS07CiAgICB9CiAgICBpbnQgYW5zID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgazsgKytpKSB7CiAgICAgIGludCBuaSA9IGkgPT0gayAtIDEgPyAwIDogaSArIDE7CiAgICAgIGFucyArPSBjbnRbb3JkW2ldXVtvcmRbbmldXTsKICAgIH0KICAgIGNvdXQgPDwgYWJzKGFucykgPDwgJ1xuJzsKICB9CiAgcmV0dXJuIDA7Cn0=