퍼터

아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

폭스 시엘은 퍼터 하나만 쓰는 골프인 미니 골프를 연습한다. 실력을 키우려면 공을 벽에 얼마나 잘 튕기느냐가 중요하다고 시엘은 생각한다.

미니 골프장은 2차원 평면 위에 있고, 볼록다각형을 이루는 NN개의 벽으로 둘러싸여 있다. 처음에 공은 경기장 안쪽의 점 (sx,sy)(s_x, s_y)에 놓여 있다. 공은 충분히 작아서 점으로 본다.

시엘은 공을 어느 방향으로든 칠 수 있고, 원하는 순간에 공을 멈출 수 있다. 공은 직선으로 움직인다. 공이 벽에 부딪히면 거울처럼 반사한다. 즉, 입사각과 반사각이 같다.

시엘은 다음 두 조건을 만족하는 샷을 한 번 친다.

  • 공이 경기장의 각 벽에 정확히 한 번씩 부딪힌다.
  • 공이 경기장의 꼭짓점에는 부딪히지 않는다.

공이 벽에 부딪히는 순서로 가능한 것이 몇 가지인지 세어라.

입력

입력은 여러 개의 데이터 세트로 이루어진다. 데이터 세트의 개수는 100개를 넘지 않는다. 각 데이터 세트의 형식은 다음과 같다.

N
sx sy
x1 y1
:
:
xN yN

첫 줄에 정수 NN (3N83 \le N \le 8)이 주어진다. 둘째 줄에 공의 처음 위치를 나타내는 두 정수 sxs_xsys_y (50sx,sy50-50 \le s_x, s_y \le 50)가 주어진다. 이어지는 NN개의 줄에는 경기장 꼭짓점의 좌표를 나타내는 두 정수 xix_iyiy_i (50xi,yi50-50 \le x_i, y_i \le 50)가 주어진다. 꼭짓점은 반시계 방향으로 주어진다. 처음 위치 (sx,sy)(s_x, s_y)는 경기장 안쪽에 있고, 경기장은 볼록하다.

가능한 벽의 순서마다, 공이 마지막 벽에 부딪힐 때까지 공과 경기장의 꼭짓점 (xi,yi)(x_i, y_i) 사이의 거리가 항상 10610^{-6}보다 큰 발사 방향이 존재함이 보장된다.

마지막 데이터 세트 다음 줄에는 0 하나만 주어진다.

출력

각 데이터 세트마다 가능한 벽의 순서의 개수를 한 줄에 출력한다.