#include #define ll long long using namespace std; const int inf=0x3f3f3f3f; const int maxn=510; ll n,m; ll d[maxn][maxn]; struct node{ ll x,y; }a[maxn],b[maxn]; int f(node a,node b,node c){ ll x=b.x-a.x,y=b.y-a.y; ll xx=c.x-a.x,yy=c.y-a.y; ll t=x*yy-y*xx; if(t>0) return -1; else if(t==0) return 0; else return 1; } int main(){ while(cin>>n) { for (int i = 0; i < n; i++) cin >> a[i].x >> a[i].y; cin >> m; for (int i = 0; i < m; i++) cin >> b[i].x >> b[i].y; fill(d[0], d[0] + 510 * 510, inf); for (int i = 0; i < m; i++) { for (int j = i + 1; j < m; j++) { int flag=1,type=0; for(int k=0;k=a[k].x)continue; flag=0; break; } if(type==0)type=temp; else if(type!=temp) { flag=0; break; } } if(flag) { if(type==-1)d[i][j]=1; else if(type==1)d[j][i]=1; else d[i][j]=d[j][i]=1; } } } for (int i = 0; i < m; i++) { for (int j = 0; j < m; j++) { for (int k = 0; k < m; k++) { if (d[j][k] > d[j][i] + d[i][k]) d[j][k] = d[j][i] + d[i][k]; } } } ll ans = inf; for (int i = 0; i < m; i++) ans = min(ans, d[i][i]); if (ans == inf) cout << "ToT" << endl; else cout << m - ans << endl; } return 0; }