#include #include #define FOR(i, l, r) for(int i = l; i <= r; i++) using namespace std; const int N = 510; struct edge{int to, next;} e[N * N]; int n, m, ans, fl, cnt; int vis[N], head[N], h[N]; struct poi{int x, y;} a[N], b[N]; poi operator - (poi a, poi b) {poi c; c.x = a.x - b.x; c.y = a.y - b.y; return c;} int operator * (poi a, poi b) {return a.x * b.y - a.y * b.x;} void ins(int x, int y) { e[++cnt].to = y; e[cnt].next = head[x]; head[x] = cnt; } int bfs(int y) { FOR(i, 1, m) vis[i] = 0; int l = 0, r = 1; vis[y] = 1; h[1] = y; while (l < r) { int x = h[++l]; for(int i = head[x]; i; i = e[i].next) { if (e[i].to == y) return vis[x]; if (!vis[e[i].to]) { vis[e[i].to] = vis[x] + 1; h[++r] = e[i].to; } } } return m + 1; } int main() { while (scanf("%d", &n) != EOF) { FOR(i, 1, n) scanf("%d%d", &a[i].x, &a[i].y); scanf("%d", &m); FOR(i, 1, m) scanf("%d%d", &b[i].x, &b[i].y); cnt = 0; FOR(i, 1, m) head[i] = 0; FOR(i, 1, m) FOR(j, i + 1, m) { fl = 1; FOR(k, 1, n) if ((b[j] - b[i]) * (a[k] - b[i]) < 0) {fl = 0; break;} if (fl) ins(i, j); fl = 1; FOR(k, 1, n) if ((b[i] - b[j]) * (a[k] - b[j]) < 0) {fl = 0; break;} if (fl) ins(j, i); } ans = m + 1; FOR(i, 1, m) ans = min(ans, bfs(i)); if (ans > m) puts("ToT"); else printf("%d\n", m - ans); } return 0; }