#include using namespace std; const int N = 550; int n, m, a[N][N]; int read() { int x = 0, p = 1; char c = getchar(); for (; !isdigit(c); c = getchar()) if (c == '-') p = -1; for (; isdigit(c); c = getchar()) x = (x << 3) + (x << 1) + (c & 15); return x * p; } struct Point { int x, y; Point(int _x = 0, int _y = 0) { x = _x; y = _y; } Point operator - (const Point p) { return Point(x - p.x, y - p.y); } int operator * (const Point p) { return x * p.y - y * p.x; } } p[N], q[N]; bool check(int i, int j) { if (i == j) return 0; for (int k = 1; k <= n; k++) if ((q[j] - q[i]) * (p[k] - q[i]) > 0) return 0; return 1; } int main() { while (cin >> n) { memset(a, 63, sizeof a); for (int i = 1; i <= n; i++) p[i] = Point(read(), read()); m = read(); for (int i = 1; i <= m; i++) q[i] = Point(read(), read()); for (int i = 1; i <= m; i++) for (int j = 1; j <= m; j++) if (check(i, j)) a[i][j] = 1; for (int k = 1; k <= m; k++) for (int i = 1; i <= m; i++) for (int j = 1; j <= m; j++) a[i][j] = min(a[i][j], a[i][k] + a[k][j]); for (int i = 1; i <= m; i++) a[0][0] = min(a[0][0], a[i][i]); if (a[0][0] == 0x3f3f3f3f) puts("ToT"); else cout << m - a[0][0] << endl; } return 0; }