폭스 시엘은 퍼터 하나만 쓰는 골프인 미니 골프를 연습한다. 실력을 키우려면 공을 벽에 얼마나 잘 튕기느냐가 중요하다고 시엘은 생각한다.
미니 골프장은 2차원 평면 위에 있고, 볼록다각형을 이루는 N개의 벽으로 둘러싸여 있다. 처음에 공은 경기장 안쪽의 점 (sx,sy)에 놓여 있다. 공은 충분히 작아서 점으로 본다.
시엘은 공을 어느 방향으로든 칠 수 있고, 원하는 순간에 공을 멈출 수 있다. 공은 직선으로 움직인다. 공이 벽에 부딪히면 거울처럼 반사한다. 즉, 입사각과 반사각이 같다.
시엘은 다음 두 조건을 만족하는 샷을 한 번 친다.
공이 벽에 부딪히는 순서로 가능한 것이 몇 가지인지 세어라.
입력은 여러 개의 데이터 세트로 이루어진다. 데이터 세트의 개수는 100개를 넘지 않는다. 각 데이터 세트의 형식은 다음과 같다.
N
sx sy
x1 y1
:
:
xN yN
첫 줄에 정수 N (3≤N≤8)이 주어진다. 둘째 줄에 공의 처음 위치를 나타내는 두 정수 sx와 sy (−50≤sx,sy≤50)가 주어진다. 이어지는 N개의 줄에는 경기장 꼭짓점의 좌표를 나타내는 두 정수 xi와 yi (−50≤xi,yi≤50)가 주어진다. 꼭짓점은 반시계 방향으로 주어진다. 처음 위치 (sx,sy)는 경기장 안쪽에 있고, 경기장은 볼록하다.
가능한 벽의 순서마다, 공이 마지막 벽에 부딪힐 때까지 공과 경기장의 꼭짓점 (xi,yi) 사이의 거리가 항상 10−6보다 큰 발사 방향이 존재함이 보장된다.
마지막 데이터 세트 다음 줄에는 0 하나만 주어진다.
각 데이터 세트마다 가능한 벽의 순서의 개수를 한 줄에 출력한다.