#include #define N 505 using namespace std; struct data{ int x,y; int operator * (const data &b)const{return x*b.y-y*b.x;} data operator - (const data &b)const{ data ret; ret.x=x-b.x;ret.y=y-b.y; return ret; } }a[N],b[N];int F[N][N]; int k,i,j,ans,n,m; int ok(int x,int y){ for (int i=1;i<=n;i++){ //int t=(a[i]-b[x])*(a[i]-b[y]); //int t=(a[i].x-b[x].x)*(a[i].y-b[y].y)-(a[i].y-a[x].y)*(a[i].x-b[y].x); //int t=(b[y]-a[i])*(b[x]-a[i]); int t=(b[y].x-a[i].x)*(b[x].y-a[i].y)-(b[x].x-a[i].x)*(b[y].y-a[i].y); if (t>0) return 0; if (t<0) continue; if (a[i].xmax(b[x].x,b[y].x)) return 0; if (a[i].ymax(b[x].y,a[y].y)) return 0; } return 1; } int main(){ while (scanf("%d",&n)!=EOF){ for (i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y); scanf("%d",&m); for (i=1;i<=m;i++) scanf("%d%d",&b[i].x,&b[i].y); for (i=1;i<=m;i++) for (j=1;j<=m;j++) if (i==j) F[i][j]=1e9;else F[i][j]=ok(i,j)?1:1e9; for (k=1;k<=m;k++) for (i=1;i<=m;i++) if (F[i][k]<1e9) for (j=1;j<=m;j++) F[i][j]=min(F[i][j],F[i][k]+F[k][j]); ans=1e9; for (i=1;i<=m;i++) ans=min(ans,F[i][i]); if (ans==1e9) puts("ToT");else printf("%d\n",m-ans); } }