#include using namespace std; #define INF 0xfffffff typedef struct point { int x, y; } point; point house[500]; point bear[500]; int path[500][500]; inline int acc(int b1, int b2, int h) { int tmp = (house[h].x - bear[b1].x) * (bear[b1].y - bear[b2].y) - (house[h].y - bear[b1].y) * (bear[b1].x - bear[b2].x); if (tmp < 0) return 1; if (tmp == 0 && (house[h].x - bear[b1].x) * (house[h].x - bear[b2].x) <= 0 && (house[h].y - bear[b1].y) * (house[h].y - bear[b2].y) <= 0) return 1; return 0; } int main() { int n, m; while (cin >> n) { for (int i = 0; i < n; i++) cin >> house[i].x >> house[i].y; cin >> m; for (int i = 0; i < m; i++) cin >> bear[i].x >> bear[i].y; for (int i = 0; i < m; i++) for (int j = 0; j < m; j++) path[i][j] = INF; for (int i = 0; i < m; i++) { for (int j = 0; j < m; j++) { if (i == j) continue; int flag = 1; for (int k = 0; k < n; k++) { if (!acc(i, j, k)) { flag = 0; break; } } if (flag) path[i][j] = 1; } } for (int i = 0; i < m; i++) for (int j = 0; j < m; j++) { if (path[i][j] == INF) continue; for (int k = 0; k < m; k++) if (path[k][j] > path[k][i] + path[i][j]) path[k][j] = path[k][i] + path[i][j]; } int min = INF; for (int i = 0; i < m; i++) { if (path[i][i] < min) min = path[i][i]; } if (min == INF) cout << "ToT\n"; else cout << m - min << endl; } return 0; }