#include using namespace std; int n, m; struct Point { int x, y; Point operator - (const Point &b) const { Point res; res.x=x-b.x, res.y=y-b.y; return res; } double operator * (const Point &b) const { return x*b.y-y*b.x; } } h[505], s[505]; int v[505][505]; bool check(Point x, Point y, Point z) { if((x.xz.x && y.x>z.x) || (x.y>z.y && y.y>z.y)) return true; return false; } int main() { for( ; scanf("%d", &n)!=EOF; ) { memset(v, 0x3f, sizeof v); for(int i=1; i<=n; i++) scanf("%d%d", &h[i].x, &h[i].y); scanf("%d", &m); for(int i=1; i<=m; i++) scanf("%d%d", &s[i].x, &s[i].y); for(int i=1; i<=m; i++) { for(int j=1; j<=m; j++) { bool flag=true; for(int k=1; k<=n; k++) { if((s[i]-s[j])*(s[i]-h[k])<0 || ((s[i]-s[j])*(s[i]-h[k])==0 && check(s[i], s[j], h[k]))) { flag=false; break; } } if(flag) v[i][j]=1; } } int ans=v[0][0]; for(int k=1; k<=m; k++) { for(int i=1; i<=m; i++) { for(int j=1; j<=m; j++) { v[i][j]=min(v[i][j], v[i][k]+v[k][j]); } } } for(int i=1; i<=m; i++) ans=min(ans, v[i][i]); if(ans>m) printf("ToT\n"); else printf("%d\n", m-ans); } return 0; }