레이저 태그

시간 제한1초메모리 제한128 MB

문제

레이저 태그 경기장에 위를 향해 세워진 양면 평면 거울 여러 개가 놓여 있습니다. 거울은 충분히 높아서 경기장을 위에서 내려다본 2차원 평면으로 볼 수 있습니다. 거울은 레이저 빔을 반사하므로, 당신이 쏜 빔이 거울 하나 이상에 튕겨 발사 지점, 즉 당신 자신에게 되돌아올 수 있습니다. 이런 각도를 피할 수 있도록, 빔이 발사 지점으로 되돌아오는 모든 초기 발사 각도를 구하세요.

거울은 완전한 반사체가 아니므로 반사 횟수가 최대 7회 이하인 빔만 고려하면 됩니다. 발사 지점을 데카르트 좌표계의 원점에 두고, 양의 $x$ 방향을 오른쪽, 양의 $y$ 방향을 위쪽으로 둡니다. 각 거울은 두께를 무시할 수 있는 직선 선분이며 양쪽 면 모두 반사합니다. 발사 각도는 양의 $x$축에서 반시계 방향으로 잰 각도(도 단위)이며, 가장 가까운 정수로 반올림하여 $0$부터 $359$까지의 값으로 나타냅니다.

입력

입력은 하나 이상의 데이터셋으로 이루어집니다. 각 데이터셋은 거울의 개수 $n$ ($1 \le n \le 7$)이 적힌 줄로 시작합니다. 이어지는 $n$개의 줄에는 각각 한 거울의 양 끝점 좌표를 나타내는 네 정수 $x_1\ y_1\ x_2\ y_2$가 있습니다. 모든 좌표는 절댓값이 $1000$ 미만인 정수입니다. 어떤 두 거울도 서로 교차하거나 맞닿지 않으며, 어떤 거울도 원점을 지나지 않습니다.

입력의 끝에는 $0$ 하나만 있는 줄이 오며, 이 줄은 처리하지 않습니다.

출력

각 데이터셋마다 한 줄을 출력합니다. 원점에서 출발하여 최대 $7$회 반사 후 원점으로 되돌아오는 모든 빔을 고려하여, 각 발사 각도를 가장 가까운 정수로 반올림하고 $0 \le a \le 359$ 범위로 정규화합니다. 중복되는 각도를 제거한 뒤 남은 정수들을 오름차순으로 공백 하나로 구분하여 출력합니다. 원점으로 되돌아오는 빔이 하나도 없으면 대신 no danger를 출력합니다.

어떤 빔도 거울의 정확한 끝점을 스치지 않습니다. 출력 각도는 반올림하지만, 내부 계산은 모두 배정밀도 부동소수점으로 수행해야 합니다. 출력 한 줄은 $79$자를 넘지 않습니다.