#include using namespace std; typedef long long ll; #define inf 0x3f3f3f3f const int N = 500+9; struct Point{ int x,y; }pn[N],pm[N]; int cross(Point a,Point b,Point c){ return (b.x-a.x) * (c.y-a.y) - (c.x-a.x)*(b.y-a.y); } int dot(Point a,Point b,Point c){ return (b.x-a.x)*(c.x-a.x) + (b.y-a.y)*(c.y-a.y); } int dis[N][N]; int n,m; bool onSeg(Point a,Point b,Point c){ return dot(c,a,b) <= 0; } bool judge(int x,int y){ for(int i = 1;i<=n;++i){ if( cross(pm[x],pm[y],pn[i]) > 0 || cross(pm[x],pm[y],pn[i]) == 0 && onSeg(pm[x],pm[y],pn[i]) ) continue; return 0; } return 1; } void solve(){ for(int k = 1;k<=m;++k){ for(int i = 1;i<=m;++i){ for(int j = 1;j<=m;++j){ dis[i][j] = min(dis[i][j] , dis[i][k] + dis[k][j]); } } } int mi = inf; for(int i = 1;i<=m;++i) mi = min(mi,dis[i][i]); if( mi == inf ){ puts("ToT"); } else printf("%d\n",m-mi); } int main(){ while(~scanf("%d",&n)){ for(int i = 1;i<=n;++i) scanf("%d %d",&pn[i].x,&pn[i].y); scanf("%d",&m); for(int i = 1;i<=m;++i) scanf("%d %d",&pm[i].x,&pm[i].y); for(int i = 1;i<=m;++i) for(int j = 1;j<=m;++j) dis[i][j] = inf; for(int i = 1;i<=m;++i){ for(int j = 1;j<=m;++j){ if( j == i ) continue; if(judge(i,j)) dis[i][j] = 1; } } solve(); } }