#include using namespace std; const int maxn = 505; const int inf = 4e8; struct point{ int x, y; }A[maxn],B[maxn]; int onLeft(point a, point b, point c){ int x1 = b.x - a.x, x2 = c.x - a.x; int y1 = b.y - a.y, y2 = c.y - a.y; return x1 * y2 -x2 * y1; } bool inside (point a, point b, point c){ int x1 = min(a.x,b.x), x2 = max(a.x,b.x); int y1 = min(a.y,b.y), y2 = max(a.y,b.y); return c.x >= x1 && c.x <= x2 && c.y >= y1 && c.y <= y2; } int n,m,mp[maxn][maxn]; int main () { while(scanf("%d",&n)!=EOF){ for (int i = 0;i < n; i++) scanf("%d%d",&A[i].x,&A[i].y); scanf("%d",&m); for (int i = 0;i < m; i++) scanf("%d%d",&B[i].x, &B[i].y); for (int i = 0;i < m; i++){ for (int j = 0;j < m; j++){ int flag = 1; for (int k = 0;k < n; k++){ int temp = onLeft(B[i],B[j],A[k]); if (temp < 0 || (!temp && !inside(B[i],B[j],A[k]))){ flag = 0; break; } } if (flag) mp[i][j] = 1; else mp[i][j] = inf; } } for (int k = 0; k < m; k++) for (int i = 0; i < m; i++) for (int j = 0; j < m; j++) mp[i][j] = min(mp[i][j] ,mp[i][k] + mp[k][j]); int ans = inf; for (int i = 0;i < m; i++) ans = min(ans, mp[i][i]); if (ans>=m) printf("ToT\n"); else printf("%d\n", m-ans); } return 0; }